Google maps api 3 Google maps v3按地址或位置对多个自定义标记进行地理编码
我需要通过地址或lat/lon使用MapsV3 api绘制多个自定义地图标记。我将以下代码放在一起,这些代码对lon/lat正常工作,但如果数据包含地址,地理编码器将不返回任何内容。关于如何解决这个问题有什么想法吗Google maps api 3 Google maps v3按地址或位置对多个自定义标记进行地理编码,google-maps-api-3,Google Maps Api 3,我需要通过地址或lat/lon使用MapsV3 api绘制多个自定义地图标记。我将以下代码放在一起,这些代码对lon/lat正常工作,但如果数据包含地址,地理编码器将不返回任何内容。关于如何解决这个问题有什么想法吗 $(document).ready(function () { initialize(); }); function initialize() { var centerMap = new google.maps.LatLng(-27.0,13
$(document).ready(function () { initialize(); });
function initialize() {
var centerMap = new google.maps.LatLng(-27.0,133.0);
var options = {
panControl: false,
zoomControl: true,
scaleControl: false,
mapTypeControl: false,
streetViewControl: false,
zoom: 3,
center: centerMap,
mapTypeId: google.maps.MapTypeId.ROADMAP
}
var map = new google.maps.Map(document.getElementById("map"), options);
var data = [
{
'title':'F C Building Construction ...',
'address':'',
'zindex':20,
'lat':'-33.797847',
'lon':'151.259928',
'marker_number':1,
'marker_html':' html content...',
'image': {
url:'//localhost/assets/images/markers/marker_1.png',
size: new google.maps.Size(24, 29),
origin: new google.maps.Point(0,0),
anchor: new google.maps.Point(10, 29)
}
}];
setMarkers(map, data);
var infowindow = new google.maps.InfoWindow();
}
function showMapPin(i) { }
function setMarkers(map,data) {
var bounds = new google.maps.LatLngBounds();
for (var i = 0; i < data.length; i++) {
setMarker(map, data[i], bounds);
}
map.fitBounds(bounds);
}
function setMarker(map, m, bounds) {
if(m["address"]!="") {
var geocoder = new google.maps.Geocoder();
geocoder.geocode( { "address": m["address"] }, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
var siteLatLng = results[0].geometry.location;
}
});
} else {
var siteLatLng = new google.maps.LatLng(m["lat"], m["lon"]);
}
if(siteLatLng) {
var marker = new google.maps.Marker({
position: siteLatLng,
map: map,
//shadow: shadow,
icon: m["image"],
title: m["title"],
zIndex: m["zindex"],
html: m["marker_html"]
});
bounds.extend(siteLatLng);
google.maps.event.addListener(marker, "click", function() {
infowindow.setContent(this.html);
infowindow.open(map, this);
});
} // if latlng
}//]]>
$(document).ready(函数(){initialize();});
函数初始化(){
var centerMap=new google.maps.LatLng(-27.0133.0);
变量选项={
泛控制:错误,
动物控制:对,
scaleControl:false,
mapTypeControl:false,
街景控制:错误,
缩放:3,
中心:中心地图,
mapTypeId:google.maps.mapTypeId.ROADMAP
}
var map=new google.maps.map(document.getElementById(“map”),选项);
风险值数据=[
{
“标题”:“F C建筑施工…”,
“地址”:“,
“zindex”:20,
‘lat’:‘-33.797847’,
‘lon’:‘151.259928’,
“标记号”:1,
“marker_html”:“html内容…”,
“图像”:{
url:“//localhost/assets/images/markers/marker_1.png”,
尺寸:新谷歌地图尺寸(24,29),
来源:新google.maps.Point(0,0),
主持人:新谷歌地图点(10,29)
}
}];
设置标记(地图、数据);
var infowindow=new google.maps.infowindow();
}
函数showMapPin(i){}
函数集合标记(映射,数据){
var bounds=new google.maps.LatLngBounds();
对于(变量i=0;i
回顾代码后,我意识到变量siteLatLng在geocode函数范围内,因此它永远不会被传递,也无法返回。在该功能中设置标记是有效的