请允许我解释实现目标的一种选择。我使用 Google Maps API v3 提供的标记和 infoWindow 对象,您可以在我在链接中附加的文档中找到它们。随意跟随我创建的 jsFiddle:http: //jsfiddle.net/bgvYH/
首先,你想用它的选项来启动你的地图——我假设你知道下面代码片段中的不同变量代表什么:
var myLatlng = new google.maps.LatLng(41.097905,-73.405006);
var myOptions = {
zoom: 16,
center: myLatlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
}
var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
如果您想根据自己的喜好自定义地图,请查看您可以在 API 参考中设置的不同选项,您将在 myOptions 对象中设置这些选项(https://developers.google.com/maps /documentation/javascript/reference#MapOptions)。注意:我将地图的中心设置为餐厅的纬度/经度坐标 - 我取自您在 iframe 中提供的 URL ll=41.097905,-73.405006
。
现在您接下来要做的是确定要在 infoWindow 中显示的内容,因此餐厅信息:
var contentString = "<div id='content'>";
contentString += "<div id='title'>Mr. Frosty's Deli and Grill</div>";
contentString += "<div id='info'><p>10 1st Street</p><p>Norwalk, CT 06855</p><p>(203) 956-5767</p><p><a href='http://thebeachburger.com/'>thebeachburger.com</a></p></div></div>";
您甚至可能最终从数据库或 JSON 对象中提取这些信息,具体取决于您对该项目的深入程度(现在我将其作为静态 HTML)。
接下来我们初始化 infoWindow 对象并将 contentString 设置为 infoWindow 的 content 选项。您可以在此处自定义其他选项(就像地图选项一样,再次查看 InfoWindowOptions 的参考:https ://developers.google.com/maps/documentation/javascript/reference#InfoWindowOptions )
var infowindow = new google.maps.InfoWindow({
content: contentString
});
设置好 infoWindow 对象后,初始化标记对象 - 这会将气泡放置在地图上。再一次,您在初始化时设置标记的选项,就像您对地图对象和 infoWindow 对象所做的那样 - 您可以通过查看参考进一步自定义它(我认为那里甚至还有一个选项用于您可以在其中使用自定义图标的标记 - 您可以在这里获得非常有创意的东西)。
var marker = new google.maps.Marker({
position: myLatlng,
map: map,
title:"Mr. Frosty's Deli and Grill"
});
最后,您需要将 Marker 和 infoWindow 绑定在一起 - 这样当用户单击标记时,信息就会弹出。这是通过使用事件侦听器来实现的,您可以在标记变量上侦听“单击”操作。阅读此文档以获取有关 google 地图https://developers.google.com/maps/documentation/javascript/events上的事件的信息。同样,通过 API 参考查看您可以在对象上监听的不同事件。
google.maps.event.addListener(marker, 'click', function() {
infowindow.open(map,marker);
});
应该这样做,您应该有一个替代您包含的 iframe 的工作 - 除了现在您可以自定义地图以及您在其上执行的操作,无论您想要什么。在 jsFiddle 中,我还包含了一些样式,只是为了让 infoWindow 中的内容看起来不错。
Now, I want to let you know - I believe there is another option to what your looking for - but I have yet to experiment with this API. It is the Google Places API, which you'll have register for. But from what I read through the documents, I think you may be able to achieve what you want to do. Have a look at it ( https://developers.google.com/maps/documentation/places/ ), and see what's good.