如何从回调函数函数中获取位置(结果)

问题描述 投票:0回答:1

我无法获得两个标记之间的路线任何帮助?

var geocodingParams = { searchText:'street abc'};

//定义回调函数以处理地理编码响应:

var onResult = function(result) {

  var locations = result.Response.View[0].Result,
    position,
    marker;

  // Add a marker for each location found
  for (i = 0;  i < locations.length; i++) {
  position = {
    lat: locations[i].Location.DisplayPosition.Latitude,
    lng: locations[i].Location.DisplayPosition.Longitude
  };
  marker = new H.map.Marker(position);
  map.addObject(position);

  } 

 }

//获取地理编码服务的实例:

var geocoder = platform.getGeocodingService();

geocoder.geocode(geocodingParams, onResult, onError)

//路由

function calculateRouteFromAtoB(platform) { 

  var router = platform.getRoutingService(),
    routeRequestParams = {
      mode: 'fastest;car',
      representation: 'display',
      routeattributes : 'waypoints,summary,shape,legs',
      maneuverattributes: 'direction,action',
      language: 'de-DE',
      alternatives : '3',
      waypoint0: 'position of the marker1' ,  
      waypoint1:  'position of the marker2'

    };
  router.calculateRoute(routeRequestParams,onSuccess,onError );

}

我试图在函数calculateRouteFromAtoB()中定义waypoint0和waypoint1,任何想法?

javascript here-api
1个回答
0
投票

您可以在地图中获取对象,看看它们是否是H.O.map.Marker的instanceOf。基本上它们将是您在地图上创建的标记。如果除了您创建的标记之外没有其他对象,则可以直接处理这些对象。

length = map.getObjects()。length //给出标记的数量

假设您只有两个标记(分别位于waypoint0和1),您可以按如下方式编写函数。希望这可以帮助!

function calculateRouteFromAtoB(platform) { 
  point1 = map.screenToGeo(map.getObjects()[0].getPosition().lat, map.getObjects()[0].getPosition().lng);
  point2 = map.screenToGeo(map.getObjects()[1].getPosition().lat, map.getObjects()[1].getPosition().lng);
  var router = platform.getRoutingService(),
    routeRequestParams = {
      mode: 'fastest;car',
      representation: 'display',
      routeattributes : 'waypoints,summary,shape,legs',
      maneuverattributes: 'direction,action',
      language: 'de-DE',
      alternatives : '3',
      waypoint0: point1.lat+','+point1.lng ,  
      waypoint1:  point2.lat+','+point2.lng

    };
  router.calculateRoute(routeRequestParams,onSuccess,onError );

}
© www.soinside.com 2019 - 2024. All rights reserved.