2014-12-22 1 views
1

Я использую API слоев данных для добавления данных геоинформации для сопоставления.Получить ссылку на маркер от функции geoJSON, добавленной с помощью Data Layers API

Но проблема в том, что метод addGeoJson возвращает список функций, и я не могу найти метод интерфейса для получения ссылки на маркер obj, связанной с этой функцией.

Я не хочу создавать объекты маркера Google на лету, добавлять их на карту и удалять эту функцию. Это перебор.

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

Thanks,

Seb.

ответ

1

У меня есть эта проблема. Я не нашел многого в документе API. Вам нужен объект Marker, и у вас его нет, у вас есть функции, потому что вы загрузили их на слой данных.

Однако в InfoWindow documentation говорится, что вы можете создать MVCObject с набором позиций. Я сделал это ниже в обработчике событий. Вам не нужно класть его на карту, просто обрабатывайте событие click, создавая MVCObject и отправляя его конструктору infoWindow.

Пример:

function initialize(mapID) { 
    var myLatlng = new google.maps.LatLng(38.951644, -92.334127); 
    var mapOptions = { 
     zoom: 12, 
     center: myLatlng 
    } 
    var map = new google.maps.Map(document.getElementById(mapID), mapOptions); 
    map.data.addGeoJson(realestate_js.geojson_results); 
    map.data.setStyle(function(feature){ 
     // setStyle executes this function on each feature... 
     // each feature then receives the "google.maps.Data.StyleOptions" object 
     // which defines its icons and stuff. 
     // https://developers.google.com/maps/documentation/javascript/3.exp/reference#Data.StyleOptions 
     return { 
      'clickable':true, 
      'icon':feature.A.icon, 
      'title':feature.A.address1, 
     } 
    }); 
    var fakeMarker = new google.maps.MVCObject(); 
    var infoWindow = new google.maps.InfoWindow({ 
     'content':"", 
    }); 
    map.data.addListener('click', function(event){ 
     fakeMarker.set('position', {'lat':event.latLng.A, 'lng':event.latLng.F}); 
     var infoWindow = new google.maps.InfoWindow({ 
      'content':"<h1>Info Window Content here</h1><p>omg this so text</p>" + , 
     }); 
     infoWindow.open(map, fakeMarker); 
    }); 
} 
+0

Я считаю, что '' A' и f' являются уменьшенная внутренние имена, и они были разные для меня. Вместо этого я сделал fakeMarker.set ('position', event.latLng) '. –

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