2013-04-29 90 views
0

如何获得var ble = new google.maps.Marker的位置?我试过ble.getPosition().lat();,但它不起作用我想我不会命名标记并将其调用正确。按标记名称获取标记的位置

var map = new google.maps.Map(document.getElementById('map'), { 
     zoom: 8, 
     center: new google.maps.LatLng(55.580622, 23.104248), 
     mapTypeId: google.maps.MapTypeId.HYBRID 
    }); 


var london = new google.maps.LatLng(56, 22); 
    var MyApp = {}; 

function HomeControl(controlDiv, map) { 
    controlDiv.style.padding = '5px'; 
    var controlUI = document.createElement('div'); 
    controlUI.appendChild(controlText); 

    google.maps.event.addDomListener(controlUI, 'click', function() { 
     window.blia = new google.maps.Marker({ 
     position: london, 
     draggable:true, 
     map: map, 
     }); 
    }); 
} 

var aa = blia.getPosition(); 

    var homeControlDiv = document.createElement('div'); 
    var homeControl = new HomeControl(homeControlDiv, map); 
    map.controls[google.maps.ControlPosition.TOP_RIGHT].push(homeControlDiv); 

    var directionsService = new google.maps.DirectionsService(); 
var directionsDisplay = new google.maps.DirectionsRenderer(); 

    var infowindow = new google.maps.InfoWindow(); 

    var marker, i; 

    for (i = 0; i < locations.length; i++) { 
     marker = new google.maps.Marker({ 
     position: new google.maps.LatLng(locations[i][1], locations[i][2]), 
     map: map, 
     icon: 'peace.png' 
     }); 

     google.maps.event.addListener(marker, 'click', (function(marker, i) { 
     return function() { 
      MyApp.xxx = this.position; 
      alert(aa); 
      infowindow.setContent('x' + name[i][3] + '' + name[i][4] + 'x'); 
      infowindow.open(map, marker); 

     var request = { 
     origin: MyApp.xxx, 
     destination: MyApp.posit, 
     travelMode: google.maps.DirectionsTravelMode.DRIVING 
    }; 

     directionsService.route(request, function(response, status) { 
     if (status == google.maps.DirectionsStatus.OK) { 
     directionsDisplay.setDirections(response); 
     } 
     }) 

     } 
     })(marker, i)); 
    } 
directionsDisplay.setMap(map); 
+0

ble是一个局部变量,因此您不能在创建标记的匿名函数一侧引用它。 – miah 2013-04-29 16:03:06

+0

好吧,但我的方法调用标记对象是“好”? 那我怎么能得到它呢?我尝试这样做: 设置全局变量 'VAR MyApp的= {};'' = MyApp.ble新google.maps.Marker' '变种AA = MyApp.ble.getPosition()LAT();' – user1876234 2013-04-29 16:06:26

+0

。是的,假设变量'london'包含'LatLang','map'包含对google地图的引用。 – miah 2013-04-29 16:12:24

回答

0

如果我们做一些改变的HomeControl功能,它应该工作:

function HomeControl(controlDiv, map) { 
    controlDiv.style.padding = '5px'; 
    var controlUI = document.createElement('div'); 
    controlDiv.appendChild(controlUI); 

    var controlText = document.createElement('div'); 
    controlText.innerHTML = '<strong>Trigger</strong>'; 
    controlUI.appendChild(controlText); 

    google.maps.event.addDomListener(controlUI, 'click', function() { 
    MyApp.defaultmarker = new google.maps.Marker({ 
     position: map.getCenter(), 
     draggable:true, 
     map: map 
    }); 
    }); 
} 
  • 所有的HTML元素需要被追加到controlDiv
  • 变量传递的元素的伦敦没有在功能里设置,所以我们应该把标记放在地图的中心。
  • 将新标记添加到全局MyApp,以便在按钮被控制单击后可用。

删除此行var aa = blia.getPosition();,因为blia未设置(在新代码中为MyApp.defaultmarker),直到单击控件后,您应该没事。