繁体   English   中英

如何使用地方网址创建谷歌地图标记

[英]How to create google maps markers with place url

我想知道是否可以使用https://www.google.lk/maps/place/London等地点网址在Google地图中创建标记,而不是使用纬度和经度坐标。 我正在使用以下代码来创建标记。

function initialize() {
  var myLatlng = new google.maps.LatLng(-25.363882,131.044922);
  var mapOptions = {
    zoom: 4,
    center: myLatlng
  }
  var map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);

  var marker = new google.maps.Marker({
      position: myLatlng,
      map: map,
      title: 'Hello World!'
  });
}

google.maps.event.addDomListener(window, 'load', initialize);

您可以将Places库用于此目的,特别是google.maps.places.PlacesService对象的textSearch方法。

完整的例子

 function initialize() { var mapOptions = { mapTypeId: google.maps.MapTypeId.ROADMAP, zoom: 15 } var map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions); var request = { query: 'London' }; var service = new google.maps.places.PlacesService(map); service.textSearch(request, callback); function callback(results, status) { if (status == google.maps.places.PlacesServiceStatus.OK) { var marker = new google.maps.Marker({ map: map, place: { placeId: results[0].place_id, location: results[0].geometry.location } }); map.setCenter(results[0].geometry.location); } } } google.maps.event.addDomListener(window, 'load', initialize); 
  html, body, #map-canvas { height: 100%; margin: 0px; padding: 0px; } 
 <script src="https://maps.googleapis.com/maps/api/js?v=3.exp&signed_in=true&libraries=places"></script> <div id="map-canvas"></div> 

您可能需要首先使用Google Map Geocoding服务转换地名长度和纬度元组,如下所示:

  1. 通过GET请求Google地理编码服务,传递地名 (只是一个城市名称,因为您使用的示例是正常的):

    GET: https//maps.googleapis.com/maps/api/geocode/json? address = london

    这将返回包含有关伦敦的地理空间信息的JSON:

     { "results" : [ { "address_components" : [ { "long_name" : "ลอนดอน", "short_name" : "ลอนดอน", "types" : [ "locality", "political" ] }, { "long_name" : "สหราชอาณาจักร", "short_name" : "GB", "types" : [ "country", "political" ] } ], "formatted_address" : "ลอนดอน สหราชอาณาจักร", "geometry" : { "bounds" : { "northeast" : { "lat" : 51.6723432, "lng" : 0.148271 }, "southwest" : { "lat" : 51.38494009999999, "lng" : -0.3514683 } }, "location" : { "lat" : 51.5073509, "lng" : -0.1277583 }, "location_type" : "APPROXIMATE", "viewport" : { ... ... 
    1. 给定JSON响应,在纬度,经度坐标中提取该位置的“粗略位置” ,如下所示:

       var coord = response.results[0].geometry.location; 

    所以你得到: coord = {lat : 51.5073509, lng : -0.1277583}

    1. 然后在该给定坐标处绘制标记 ,并完成。

       var marker = new google.maps.Marker({ position: coord, // {lat : 51.5073509, lng : -0.1277583} map: map, title: 'London' }); 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM