Изменение значков меток KML при нажатии в API Карт Google V3 - PullRequest
1 голос
/ 07 октября 2010

Я пытаюсь изменить значки меток KML наложения KML в примере приложения Maps, над которым я работаю.

Вот пример кода -

function seekml() {

var myLatlng = new google.maps.LatLng(40.65, -73.95);
var myOptions = {
    zoom: 14,
    mapTypeControl: true,
    center: myLatlng,
    mapTypeControlOptions: {
        style: google.maps.MapTypeControlStyle.DROPDOWN_MENU,
     position: google.maps.ControlPosition.TOP_RIGHT
    },
    navigationControl: true,
    navigationControlOptions: {
        style: google.maps.NavigationControlStyle.SMALL
    },
    mapTypeId: google.maps.MapTypeId.ROADMAP
};
url_end = "?nocache=" + (new Date()).valueOf(); //For No KML Caching 
myKML = "http://kmlscribe.googlepages.com/SamplesInMaps.kml" + url_end

gMap = new google.maps.Map(document.getElementById("map"), myOptions);
var ctaLayer = new google.maps.KmlLayer(myKML,{suppressInfoWindows: true});
ctaLayer.setMap(gMap);

google.maps.event.addListener(ctaLayer, 'click', function(event) {              
    this.setIcon(gYellowIcon);
  });
}

gYellowIcon был определен в моем коде ранее -

var gYellowIcon = new google.maps.MarkerImage(
  "image url",
  new google.maps.Size(31, 31),
  new google.maps.Point(0, 0),
  new google.maps.Point(6, 20));

Я хочу изменить метки наложения KML, когда пользователь нажимает любую метку, отображаемую на оверлее KML. Приведенный выше код не работает.

1 Ответ

2 голосов
/ 11 октября 2010

В настоящее время я работаю над тем же самым, и в моем случае я мог напрямую редактировать файл KML.Если у вас есть доступ к нему и вы можете его редактировать, вот что я сделал:

1) Прямо под тегом <document> вставьте что-то вроде этого:

<Style id="desired_id">
  <IconStyle>
    <Icon>
      <href>http://www.yourwebsite.com/your_preferred_icon.png</href>
      <scale>1.0</scale>
    </Icon>    
  </IconStyle>
</Style>

Параметр scaleв данный момент не поддерживается в Google Maps.Здесь вы можете проверить все поддерживаемые элементы KML в Картах Google:

http://code.google.com/intl/en-EN/apis/kml/documentation/kmlelementsinmaps.html

И здесь у вас есть некоторая информация о совместимости между KML и GMaps:

http://code.google.com/intl/en-EN/apis/kml/documentation/mapsSupport.html

2) Как только вы определили свой стиль, вы можете ссылаться на него в каждом элементе меток, добавив к нему следующее:

<styleUrl>#desired_id</styleUrl>

Теперь все ваши меткидолжно отобразиться отображение вашего пользовательского значка.

Надеюсь, это поможет.

РЕДАКТИРОВАТЬ: Извините, я не увидел при нажатии часть.Это не совсем то, что вам нужно.Я оставлю это на случай, если это поможет кому-то еще.Извините за это.

...