谷歌地图Places API,如何从标记获取标准信息窗口内容

6

我刚开始接触Google Maps,并不是一位脚本专家。非常感谢您提供的帮助。

我正在一个商店位置页面上放置一个Google地图。我已经成功使用搜索功能让地图显示了我想要的商店位置标记。现在我希望信息窗口被填充以看起来像标准的Google窗口。但是,使用我在地点库中找到的代码,结果会呈现出没有换行符的未格式化的形式,并且如果缺少某些信息,则会显示错误等。我已经搜索了很多内容,但都没有找到有用的信息。因此,如果这个问题已经得到解答,请原谅我。我已经反复阅读了Google地点库,但无论我是太蠢还是他们不涉及这个问题。

用户将单击列在页面上的商店位置,我希望向他们展示地图并显示一个标记(我认为通过搜索我可以做到这一点),当他们单击标记时,我希望商店信息显示在信息窗口中(最好是预先打开信息窗口,但我也找不到任何相关信息)。就像Google地图网站一样,我希望有一个格式良好的名称,声誉星级,格式化的地址,电话号码和网站,以及业务的图片(如果有的话)。下面的示例是针对所有这些信息都包含在Google中的业务。我目前拥有地图的代码已包括在内。

请不要简单回复以将我引导回地点库;如果只有这些,那么并没有太大帮助。我需要一些澄清,并尽可能提供一个示例。谢谢。

 <script type="text/javascript">
    var map;
    var service;
    var infowindow;

    function initialize() {
    var mvale = new google.maps.LatLng(40.708572,-74.017385);

    map = new google.maps.Map(document.getElementById('map_canvas'), {
      mapTypeId: google.maps.MapTypeId.ROADMAP,
      center: mvale,
      zoom: 16
    });

    var request = {
      location: mvale,
      radius: '500',
    keyword: "Michelle Vale"
    };

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

    function callback(results, status) {
    if (status == google.maps.places.PlacesServiceStatus.OK) {
       for (var i = 0; i < results.length; i++) {
         var place = results[i];
         createMarker(results[i]);
    }
    }
    }
    function createMarker(place) {
        var placeLoc = place.geometry.location;
        var marker = new google.maps.Marker({
          map: map,
          position: place.geometry.location
        });

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

    function openInfoWindow(id){return true;}

    google.maps.event.addDomListener(window, 'load', initialize);
    </script>
1个回答

3

我终于在另一个帖子中找到了一些关于格式化infoWindow的代码,他们在回答有关去除infoWindow边框的问题。

这是我的示例:

 infowindow.setContent('<span style="padding: 0px; text-align:left" align="left"><h5>' + place.name + '&nbsp; &nbsp; ' + place.rating 
                            + '</h5><p>' + place.formatted_address + '<br />' + place.formatted_phone_number + '<br />' +  
                            '<a  target="_blank" href=' + place.website + '>' + place.website + '</a></p>' ) ;

我还学会了如何使用Places Library中描述的getDetails函数。
我仍然不知道如何获取评分信息(我正在使用标签,但是它会出现错误),如何检索位置的图像,以及如何消除“未定义”错误的出现。
最后一个元素是在地图加载时打开信息窗口... 我看到了一篇相关帖子,但无法使其正常工作。

由于并不是所有的场所都有评分数据,如果数据不可用,则place.rating变量将为undefined。在使用变量之前,应检查它们是否为undefined。目前还没有找到获取场所图片的方法。这里在Places API问题跟踪器中有一个功能请求:http://code.google.com/p/gmaps-api-issues/issues/detail?id=3552 请点击“星形”图标以接收未来更改通知,并让我们知道您希望看到它得到解决。 - Chris Green

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接