-1

我想到的是用户首先输入半径的输入框。然后在它旁边的一个按钮上将一个可拖动的圆圈添加到地图上。

我已经DrawingMode在 Google Map V3 中尝试过。它忽略了该半径设置。

var map;
var pos;

function initialize() {
  var mapOptions = {
    zoom: 16,
    scaleControl: false,
    zoomControl: false,
    rotateControl: false,
    streetViewControl: false,
    panControl:false,

    mapTypeId: google.maps.MapTypeId.ROADMAP
  };
  map = new google.maps.Map(document.getElementById('map-canvas'),
      mapOptions);

function setCurrentLocation(){
navigator.geolocation.getCurrentPosition(function(position) {
     pos = new google.maps.LatLng(position.coords.latitude,
                                       position.coords.longitude);
     map.setCenter(pos);
})}


setCurrentLocation();

function drawCircle(){
        var draw_circle = new google.maps.Circle({
        center: pos,
        radius: 200,
        strokeColor: "#FF0000",
        strokeOpacity: 0.8,
        strokeWeight: 2,
        fillColor: "#FF0000",
        fillOpacity: 0.35,
        map: map})}


$( "#addcircle" ).click(function() {
  drawCircle();
});

我已经尝试使用上述方法。但似乎该变量在函数pos中无效。drawCircle

$( "#addcircle" ).click(function() {
  drawCircle();
});

这部分与一个特定的按钮有关,一旦单击它就应该添加圆圈。

function setCurrentLocation(){
navigator.geolocation.getCurrentPosition(function(position) {
     pos = new google.maps.LatLng(position.coords.latitude,
                                       position.coords.longitude);
     map.setCenter(pos);

     function drawCircle(){
        var draw_circle = new google.maps.Circle({
        center: pos,
        radius: 200,
        strokeColor: "#FF0000",
        strokeOpacity: 0.8,
        strokeWeight: 2,
        fillColor: "#FF0000",
        fillOpacity: 0.35,
        map: map})}
        ;
        drawCircle();

})}

如果我更改代码来测试pos,这有效。实际发送到圆的pos坐标是有效的。

但是一旦我放置drawCircle();了按钮单击处理程序,我就无法让该功能工作。

4

1 回答 1

0

你确定navigator.geolocation.getCurrentPosition 我的意思是为什么你不检查 setCurrentLocation() 中的 console.log(position.coords) 确保你将正确的对象“pos”发送到圆圈中

或者简单地将直接位置对象分配到地图中:new google.maps.LatLng(41.878113, -87.629798) 确保一切正常

于 2013-10-13T05:13:56.793 回答