2013-04-29 68 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),直到單擊控件後,您應該沒事。