Javascript 从map.data类获取标记使用geojson google maps

Javascript 从map.data类获取标记使用geojson google maps,javascript,php,google-maps,google-maps-api-3,geojson,Javascript,Php,Google Maps,Google Maps Api 3,Geojson,首先,我是从geojson启动标记,如果我想将标记用于侦听器/操作,我如何获得标记 这是我的剧本 var map; function initMap() { //makes map map = new google.maps.Map(document.getElementById('map'), { center: {lat: -6.9034482, lng: 107.6081381}, zoom: 9, styles: [{"f

首先,我是从geojson启动标记,如果我想将标记用于侦听器/操作,我如何获得标记

这是我的剧本

var map;

function initMap() {
    //makes map
    map = new google.maps.Map(document.getElementById('map'), {
        center: {lat: -6.9034482, lng: 107.6081381},
        zoom: 9,
        styles: [{"featureType":"water","stylers":[{"saturation":43},{"lightness":-11},{"hue":"#0088ff"}]},{"featureType":"road","elementType":"geometry.fill","stylers":[{"hue":"#ff0000"},{"saturation":-100},{"lightness":99}]},{"featureType":"road","elementType":"geometry.stroke","stylers":[{"color":"#808080"},{"lightness":54}]},{"featureType":"landscape.man_made","elementType":"geometry.fill","stylers":[{"color":"#ece2d9"}]},{"featureType":"poi.park","elementType":"geometry.fill","stylers":[{"color":"#ccdca1"}]},{"featureType":"road","elementType":"labels.text.fill","stylers":[{"color":"#767676"}]},{"featureType":"road","elementType":"labels.text.stroke","stylers":[{"color":"#ffffff"}]},{"featureType":"poi","stylers":[{"visibility":"off"}]},{"featureType":"landscape.natural","elementType":"geometry.fill","stylers":[{"visibility":"on"},{"color":"#b8cb93"}]},{"featureType":"poi.park","stylers":[{"visibility":"on"}]},{"featureType":"poi.sports_complex","stylers":[{"visibility":"on"}]},{"featureType":"poi.medical","stylers":[{"visibility":"on"}]},{"featureType":"poi.business","stylers":[{"visibility":"simplified"}]}]
        });

    //load marker from geojson
    map.data.loadGeoJson('<?php echo base_url().'index.php/json_site/geojsongetmap'?>');

    // set style marker
    map.data.setStyle(function(feature){
        var tit = feature.getProperty('nm_site');
        return{
            title: tit,
            icon: '<?php echo base_url()?>assets/images/mark3.png'
        };
    });

    //marker event
    map.data.addListener(marker, 'click', function(event) {
       map.setZoom(11);
       map.setCenter(marker.getPosition());  // I need to get the position of the marker who i clicked

    });
}
var映射;
函数initMap(){
//制作地图
map=new google.maps.map(document.getElementById('map'){
中心:{lat:-6.9034482,lng:107.6081381},
缩放:9,
样式:[{“featureType”:“water”,“stylers”:[{“saturation”:43},{“lightness”:-11},{“hue”:“featureType”:“road”,“elementType”:“geometry.fill”,“stylers”:[{“hue”:“#ff0000”},{“saturation”:-100},{“lightness”:99},{“featureType”:“road”,“elementType”:“geometry.stroke”,“stylers”:“{“color”:“color”:“geometry.fill”,“stylers”:“ff0000”},{“饱和度”:-100},{“lightness”:-100},{“lightness”:“景观.人造”、“元素类型”:“几何体.填充”、“样式器”:[{“颜色”:“ece2d9”}、{“特征类型”:“poi.park”、“元素类型”:“几何体.填充”、“样式器”:[{“颜色”:“ccdca1”}、{“特征类型”:“道路”、“元素类型”:“标签.文本.填充”、“样式器”:[{“颜色”:“#767676”}、{“特征类型”:“道路”、“元素类型”:“标签.文本.笔划”、“样式器”{,{“featureType”:“poi”,“stylers”:[{“visibility”:“off”}],{“featureType”:“landscape.natural”,“elementType”:“geometry.fill”,“stylers”:[{“visibility”:“on”},{“color”:“{”b8cb93”}],{“featureType”:“poi.park”,“stylers”:[{“visibility”:“on”}],{“featureType”:“poi.sports.U综合体”,“stylers”:“on”{“visibility”:“on”},{可见性“:”on“}]},{“featureType”:“poi.business”,“stylers”:[{“可见性”:“simplified”}]}]
});
//从geojson加载标记
map.data.loadGeoJson(“”);
//设置样式标记
map.data.setStyle(函数(特性){
var tit=feature.getProperty(“nm_站点”);
返回{
标题:山雀,
图标:“assets/images/mark3.png”
};
});
//标记事件
map.data.addListener(标记“单击”,函数(事件){
map.setZoom(11);
map.setCenter(marker.getPosition());//我需要获取我单击的标记的位置
});
}
如果我从geojson启动marker,如何使动作侦听器? 我怎样才能找到地图上的标记

请帮助我,任何建议都将不胜感激

感谢

该类的实例并不完全是传统google.maps.Marker对象的替代品。对于初学者来说,它们是抽象数据,不依赖于特定的表示。如何绘制它们取决于父层

但是,您仍然可以捕获事件,但需要注意的是,单击发生在数据层上,数据层接收一个
mouseEvent
作为参数。此参数包含您刚才单击的功能

这意味着您需要声明:

google.maps.event.addListener(map.data,'click',function(mouseEvent) {
    var clickedFeature = mouseEvent.feature,
        featureGeometry = clickedFeature.getGeometry(),
        featurePosition = featureGeometry.get();

    map.setCenter(featurePosition); 

});

请考虑到,在数据层中摄取geoJson不仅会产生点几何图形。如果混合使用点、多边形和线字符串,则在调用其
get
方法时,与点不同的任何内容都不会返回latLng对象。

感谢您的帮助,我看到了
get的返回值e> 方法。但我不知道如何使用它。Data.feature类有点混淆。那么我也可以从中获取属性吗?当然。正如您可以使用getGeometry一样,您也可以使用getProperty。