显示Google Maps API结果,例如Google地图文本搜索

时间:2017-03-21 14:58:27

标签: google-maps google-maps-api-3

在我的公司网站上,我使用Google地图API。我的问题是,当我进行文本搜索时,它在Google地图上的显示效果并不完全相同。 以下是我从API获得的屏幕截图以及预期结果之一:

What i have in my Google map api

Now, this is what i expect

因此,在第一个屏幕上,我的标记是正确的,但图标和公司是Cap Enfant&#39 ;,同一建筑物内的公司。 在第二个,这正是我想要实现的......

我使用了Google place api。因此,由于谷歌地图上的文本搜索给了我正确的结果,我尝试使用Textsearch api,但我得到的结果与谷歌地方API相同。 通过textsearch,我找到了我的公司(我设置了一个小半径,以确保只找到我的公司,这没关系),只是图标不好。

注意:在Google地图上,当我放大位置时,会显示Cap Enfant但不会显示我的公司(LTTD咨询)..

所以我的问题是:有没有办法在我的api中以与谷歌地图文本搜索相同的方式显示?

这是我的代码:

    var map;

function initMap() {

var lttd = new google.maps.LatLng(48.9359628, 2.3051106);

map = new google.maps.Map(document.getElementById('siegeMap'), {

 zoom: 17
});

  var request = {
    location: lttd,
    radius: 500,
    query: 'Consultant'
  };


  service = new google.maps.places.PlacesService(map);
  var infowindow = new google.maps.InfoWindow();
  service.textSearch(request, callback);

  function callback(results, status) {
    if (status == google.maps.places.PlacesServiceStatus.OK) {
      var max_iteration = (results.length < 2) ? results.length : 2;
      var resultCount = 0;
      for (var i = 0; i < results.length; i++) {
        if (google.maps.geometry.spherical.computeDistanceBetween(results[i].geometry.location, lttd) < request.radius) {
          console.log(results[i]);
          var request2 = {
            placeId: results[i].place_id
          };
          service = new google.maps.places.PlacesService(map);
          service.getDetails(request2, detailCallback);
          resultCount++;
        }
      }
      map.panTo(results[0].geometry.location);
      }
    }
}


function detailCallback(place, status) {
  if (status == google.maps.places.PlacesServiceStatus.OK) {
    var marker = new google.maps.Marker({
        map: map,
        title: 'LTTD Consulting',
        types : ['Consultant'] | ['Consultant informatique'] |['informatique'],
        position: place.geometry.location,
        name:place.name
      });

      google.maps.event.addListener(marker, 'click', function() {
        infowindow.setContent(place.name);
        infowindow.open(map, this);
      });
  }
}

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

您期望的屏幕截图看起来像是maps.google.com的屏幕截图。 places API不会创建您在屏幕截图中看到的UI组件。但是,您可以自己创建它。您只需要自己编写代码即可。这样做的好处是,您可以随心所欲地查看它,因为您提供的是代码。您可以从地点详细信息请求获取该地点的所有信息,例如电话号码,网站,营业时间等。请在此处查看我们的地方详情文档:

https://developers.google.com/maps/documentation/javascript/places#place_details

您可以使用API​​提供的信息放入像maps.google.com这样的UI组件。

还有其他几个使用Places API的示例,您可以在此处查看。其中一些具有自定义UI组件,如果您选择这样做,您可以在构建自己的组件时参考:

https://developers.google.com/maps/documentation/javascript/examples/#places

我希望这有帮助!