Google maps api 3 在google maps api中设置标记标签

Google maps api 3 在google maps api中设置标记标签,google-maps-api-3,label,geojson,Google Maps Api 3,Label,Geojson,我在为谷歌地图api找到标签时遇到了一些问题。我调用我的geojson并加载我的地图,如下所示: var map; function init() { map = new google.maps.Map(document.getElementById('map'), { zoom: 11, center: {lat: 43.2, lng: -84.65}, mapTypeId: google.maps.MapTypeId.ROADMAP }); map.da

我在为谷歌地图api找到标签时遇到了一些问题。我调用我的geojson并加载我的地图,如下所示:

    var map;
function init() {
  map = new google.maps.Map(document.getElementById('map'), {
    zoom: 11,
    center: {lat: 43.2, lng: -84.65},
mapTypeId: google.maps.MapTypeId.ROADMAP
  });

  map.data.loadGeoJson(
      'Maps/Newark.geojson');         
  map.data.setStyle({
      icon: {
          path: google.maps.SymbolPath.CIRCLE,
          scale: 4,
          fillColor: 'blue',
          fillOpacity: .5,
          strokeColor: 'blue',
          strokeWeight: 1
        }
   })  
}
这是示例geojson数据:

    {
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"geometry": {
   "type": "Point",
   "coordinates":  [ -84.69729,43.24808 ]
},
"properties": {
"Name":"Name 1",
"Address":"My Address",
"City":"town",
"State":"ST",
"Zip":12345,
"Group":"Newark"
}
},
{
"type": "Feature",
"geometry": {
   "type": "Point",
   "coordinates":  [ -84.58872,43.23395 ]
},
"properties": {
"Name":"Name 2",
"Address":"another address",
"City":"town",
"State":"ST",
"Zip": 12345,
"Group":"Newark"
}
}
]
}
我想做的是通过标记将then name属性显示为标签

我试过了,但没能成功。

修改自

变化:

  • 删除读取不相关的属性
  • 删除
    map.data.setMap(null)(我假设您仍然希望显示标记
  • 代码片段:

    函数初始化(){
    变量映射选项={
    缩放:14,
    中心:新google.maps.LatLng(43.23395,-84.58872),
    mapTypeId:google.maps.mapTypeId.ROADMAP
    };
    var map=new google.maps.map(document.getElementById('map_canvas'),mapOptions);
    var bounds=new google.maps.LatLngBounds();
    map.data.addListener('addfeature',function(evt){
    if(evt.feature.getGeometry().getType()=“点”){
    var coord=evt.feature.getGeometry().get();
    扩展(坐标);
    映射边界(bounds);
    var labelText=evt.feature.getProperty(“名称”);
    var labelDiv=document.createElement(“div”);
    labelDiv.innerHTML=labelText;
    labelDiv.setAttribute(“id”、“标签”);
    变量myOptions={
    内容:labelDiv,
    箱式:{
    边界:“无”,
    textAlign:“居中”,
    宽度:“50px”
    },
    是的,
    pixelOffset:new google.maps.Size(-25,0),
    职位:coord,
    closeBoxURL:“”,
    伊希登:错,
    窗格:“地图窗格”,
    enableEventPropagation:true
    };
    var ibLabel=新信息框(myOptions);
    ibLabel.open(map);
    }
    });
    map.data.addGeoJson(geoJson);
    }
    google.maps.event.addDomListener(窗口“加载”,初始化);
    var geoJson={
    “类型”:“FeatureCollection”,
    “特点”:[{
    “类型”:“功能”,
    “几何学”:{
    “类型”:“点”,
    “坐标”:[-84.69729,43.24808]
    },
    “财产”:{
    “名称”:“名称1”,
    “地址”:“我的地址”,
    “城市”:“城镇”,
    “州”:“圣”,
    “Zip”:12345,
    “组”:“纽瓦克”
    }
    },
    {
    “类型”:“功能”,
    “几何学”:{
    “类型”:“点”,
    “坐标”:[-84.58872,43.23395]
    },
    “财产”:{
    “名称”:“名称2”,
    “地址”:“另一个地址”,
    “城市”:“城镇”,
    “州”:“圣”,
    “Zip”:12345,
    “组”:“纽瓦克”
    }
    }
    ]
    };
    html,
    身体,
    #地图画布{
    身高:100%;
    宽度:100%;
    边际:0px;
    填充:0px;
    背景色:白色;
    }
    
    
    我遇到了几个错误:未捕获引用错误:google未定义在(索引):74(匿名)@(索引):74 infobox.js:128未捕获引用错误:google未定义在infobox.js:128,我还需要知道如何使用路径(Maps/myfile.geojson)加载外部goejson文件这些都是不同的问题。1.调用
    loadGeoJson
    将加载外部文件(如果它最初工作),
    addGeoJson
    让我加载您提供的数据并创建一个工作示例。2.
    google未定义
    是因为异步加载API,但在加载
    InfoBox
    库之前,它是同步加载的。您能想出如何显示geoJson标记的标签吗?是的,我使用了下面的答案。