2015-11-22 47 views
0

这是我用来在谷歌地图中的多个地方显示标记的代码。 我想补充一点,并在标记周围添加一个5公里的圆圈。如何在Google Maps API上添加标记圆圈

enter image description here

我试图加入的代码块没有运气:

var circle = new google.maps.Circle({ 
center:position, 
radius: radius, 
fillColor: "#0000FF", 
fillOpacity: 0.1, 
map: map, 
strokeColor: "#FFFFFF", 
strokeOpacity: 0.1, 
strokeWeight: 2 
}); 

这是下面的完整代码,并在这里参考

var center = "Vilnius, Lithuania"; 
var locations = [ 
    ['Tuskulėnų g. 20, Vilnius 09211, Lithuania', "some info"], 
    ['Stumbrų g. 21, Vilnius 08101, Lithuania', "more information"], 
    ['Kalvarijų g. 55, Vilnius 09317, Lithuania', "blah, blah"], 
    ['Birželio 23-iosios g. 6, Vilnius 03204, Lithuania', "other information"], 
    ['Teatro g. 6, Vilnius 03107, Lithuania', "to be determined"] 
]; 


var geocoder; 
var map; 
var infoWin = new google.maps.InfoWindow(); 

function initialize() { 
    geocoder = new google.maps.Geocoder(); 
    map = new google.maps.Map(
    document.getElementById("map_canvas")); 
    // center and zoom map on "center" address 
    geocoder.geocode({ 
    address: center 
    }, function(results, status) { 
    if (status == google.maps.GeocoderStatus.OK) { 
     map.fitBounds(results[0].geometry.bounds); 
    } else { 
     alert("Geocode was not successful for the following reason: " + status); 
    } 
    }); 
    for (var i = 0; i < locations.length; i++) { 
    codeAddress(locations[i], i); 
    } 

} 

function codeAddress(location, i) { 
    geocoder.geocode({ 
    'address': location[0] 
    }, function(results, status) { 
    if (status == google.maps.GeocoderStatus.OK) { 
     map.setCenter(results[0].geometry.location); 
     var marker = new google.maps.Marker({ 
     map: map, 
     title: "marker " + i, 
     position: results[0].geometry.location 
     }); 
     google.maps.event.addListener(marker, 'click', function(evt) { 
     infoWin.setContent(location[0] + "<br>" + location[1]); 
     infoWin.open(map, this); 
     }) 


//i added this block 
var circle = new google.maps.Circle({ 
center:position, 
radius: radius, 
fillColor: "#0000FF", 
fillOpacity: 0.1, 
map: map, 
strokeColor: "#FFFFFF", 
strokeOpacity: 0.1, 
strokeWeight: 2 
}); 
//end of block addition 

    } else { 
     alert("Geocode was not successful for the following reason: " + status); 
    } 
    }); 
} 

google.maps.event.addDomListener(window, "load", initialize); 

更新的jsfiddle

这是我从控制台

radius is not defined 
+0

我没有看到任何企图加入圈子中发布的代码(或为此事小提琴)。你做了什么没有奏效? – geocodezip

+0

@geocodezip你好,我在最后一个'} else {'之前添加了代码块,以便在'i'的循环中。 – EnexoOnoma

+0

仍然没有在发布的代码中看到它。只是添加它并适当调整变量适用于我,你是否得到了JavaScript错误(如'position'没有定义,'radius'没有定义)? – geocodezip

回答

2

你刚才定义radiusposition变量,如获得:

var radius = 1000; 
var position = marker.getPosition(); 

而对于塔放大您可以使用map.setZoom();setCenter例如后添加它:

map.setCenter(results[0].geometry.location); 
map.setZoom(5); 

Working fiddle


代码片段:

var center = "Vilnius, Lithuania"; 
 
var locations = [ 
 
    ['Tuskulėnų g. 20, Vilnius 09211, Lithuania', "some info"], 
 
    ['Stumbrų g. 21, Vilnius 08101, Lithuania', "more information"], 
 
    ['Kalvarijų g. 55, Vilnius 09317, Lithuania', "blah, blah"], 
 
    ['Birželio 23-iosios g. 6, Vilnius 03204, Lithuania', "other information"], 
 
    ['Teatro g. 6, Vilnius 03107, Lithuania', "to be determined"] 
 
]; 
 

 

 
var geocoder; 
 
var map; 
 
var infoWin = new google.maps.InfoWindow(); 
 

 
function codeAddress(location, i) { 
 
    geocoder.geocode({ 
 
    'address': location[0] 
 
    }, function(results, status) { 
 
    if (status == google.maps.GeocoderStatus.OK) { 
 
     map.setCenter(results[0].geometry.location); 
 
     map.setZoom(5); 
 

 
     var marker = new google.maps.Marker({ 
 
     map: map, 
 
     title: "marker " + i, 
 
     position: results[0].geometry.location 
 
     }); 
 
     google.maps.event.addListener(marker, 'click', function(evt) { 
 
     infoWin.setContent(location[0] + "<br>" + location[1]); 
 
     infoWin.open(map, this); 
 
     }) 
 

 
     var radius = 1000; 
 
     var position = marker.getPosition(); 
 

 
     var circle = new google.maps.Circle({ 
 
     center: position, 
 
     radius: radius, 
 
     fillColor: "#0000FF", 
 
     fillOpacity: 0.1, 
 
     map: map, 
 
     strokeColor: "#FFFFFF", 
 
     strokeOpacity: 0.1, 
 
     strokeWeight: 2 
 
     }); 
 

 
    } else { 
 
     alert("Geocode was not successful for the following reason: " + status); 
 
    } 
 
    }); 
 
} 
 

 
google.maps.event.addDomListener(window, "load", function() { 
 
    geocoder = new google.maps.Geocoder(); 
 
    map = new google.maps.Map(
 
    document.getElementById("map_canvas")); 
 
    // center and zoom map on "center" address 
 
    geocoder.geocode({ 
 
    address: center 
 
    }, function(results, status) { 
 
    if (status == google.maps.GeocoderStatus.OK) { 
 
     google.maps.event.addListenerOnce(map, 'bounds_changed', function() { 
 
     map.setZoom(map.getZoom() + 3); 
 
     }); 
 
     map.fitBounds(results[0].geometry.bounds); 
 

 
    } else { 
 
     alert("Geocode was not successful for the following reason: " + status); 
 
    } 
 
    }); 
 

 
    for (var i = 0; i < locations.length; i++) { 
 
    codeAddress(locations[i], i); 
 
    } 
 
});
html, 
 
body, 
 
#map_canvas { 
 
    height: 100%; 
 
    width: 100%; 
 
}
<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js"></script> 
 
<div id="map_canvas"></div>

+0

嘿,真的非常感谢你,但我想利用职位名称,而不是latlng。并围绕所有的标记,而不是一个通用的一个圆... – EnexoOnoma

+0

不客气,检查我更新的答案(也小提琴更新)。 –

+0

我接受了你的答案,非常感谢你,这真的很有帮助。在第22行中,在'map:map'的下面我添加了一个'zoom:5'没有运气 – EnexoOnoma

相关问题