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);
4

1 回答 1

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 中传递的元素
  • 变量 london 没有在函数内部设置,所以我们应该把标记放在地图的中心。
  • 将新标记添加到全局 MyApp 以便在单击按钮后可用。

删除此行,var aa = blia.getPosition();因为在单击控件之前未设置 blia(在新代码的情况下为 MyApp.defaultmarker),您应该没问题。

于 2013-04-29T17:42:29.440 回答