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

Я использую API Data Layers для добавления данных геоджона на карту.

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

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

Мне просто нужен правильный подход, прежде чем я отойду от слоев данных и вместо этого буду управлять своими собственными маркерами.

Спасибо,

Себ.

1 ответ

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

Однако в документации InfoWindow говорится, что вы можете создать 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);
    }); 
}
Другие вопросы по тегам