2010-10-07 2 views
1

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

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

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. Вышеприведенный код не работает.

+0

Я собирался спросить то же самое ... – Francesco

+0

Привет, ребята, вы наконец нашли решение этой проблемы? Спасибо –

ответ

2

В настоящее время я работаю над тем же, и в моем случае я мог бы непосредственно редактировать 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 Maps:

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> 

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

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

EDIT: Извините, я не видел при щелчке. Это не совсем то, что вам нужно. Я оставлю его, если он поможет кому-то другому. Простите за это.

+2

Спасибо, это было полезно. –

Смежные вопросы