[英]How do I create a Google Map using v3 API with clickable markers with custom html inside the marker?
我有一個充滿地址和這些位置圖片的數據庫。 注意:我沒有緯度/經度。
我需要做什么:
編寫一個使用Google API v3在Google地圖上列出其中一些地址的函數,當您單擊標記時,它將顯示地址和數據庫中的圖片。 這是頁面的插件,因此我無法編輯標題數據。 我只能在顯示代碼的地方插入代碼。
我已經閱讀了文檔,但似乎所有內容都包含很多不必要的代碼和地理地圖不需要的東西。 我正在尋找最簡單的解決方案,以便以后可以添加。
也許您想嘗試使用Gmapper( http://sourceforge.net/projects/gmapper/ )一個不錯的php類來制作Google Maps。 這是生成所有JavaScript的簡單方法,它還可以查找地址。 請注意,Google限制了地址的查找次數,您可能將在一天內無法檢索數據庫。
我能指出一個我做得差不多的網站嗎(除了當您將標記懸停而不是單擊時它會更新;只是將代碼移到所提供的空單擊事件而不是懸停事件中)。 本着真正的編碼精神,希望您能適應我所做的一切!
單擊我在此處制作的地圖上的紅色標記: http : //www.dougglover.com/samples/UOITMap/index.html
那是您要找的東西嗎?
Here is the full html with google map api v3, markers will be create on dragging the route and then each marker having custom html inside the infowindow.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?sensor=false&libraries=places"></script>
<script type="text/javascript">
var rendererOptions = {
draggable: true,
suppressInfoWindows: true
};
var directionsDisplay = new google.maps.DirectionsRenderer(rendererOptions);
var directionsService = new google.maps.DirectionsService();
var infowindow = new google.maps.InfoWindow();
var map;
var total;
var waypoint_markers = []
var myOptions = {
zoom: 6,
center: new google.maps.LatLng(46.87916, -3.32910),
mapTypeId: 'terrain'
};
var markers = [];
function init() {
map = new google.maps.Map(document.getElementById('map'),{'mapTypeId': google.maps.MapTypeId.ROADMAP});
directionsDisplay.setMap(map);
//directionsDisplay.setPanel($("#directionsPanel")[0]);
google.maps.event.addListener(directionsDisplay, 'directions_changed', function() {
watch_waypoints();
});
calcRoute(false);
}
function calcRoute(waypoints) {
var selectedMode = "DRIVING"; //document.getElementById("mode").value;
var ary;
if(waypoints) {
ary = waypoints.map(function(wpt) {return {location: wpt, stopover: false};});
} else {
ary = [];
}
var request = {
origin: "Seattle, WA",
destination: "Portland, OR",
waypoints: ary,
travelMode: google.maps.TravelMode[selectedMode],
unitSystem: google.maps.UnitSystem["IMPERIAL"]
};
directionsService.route(request, function(response, status) {
if (status == google.maps.DirectionsStatus.OK) {
directionsDisplay.setDirections(response);
}
});
}
function watch_waypoints() {
clear_markers();
var wpts = directionsDisplay.directions.routes[0].legs[0].via_waypoints;
for(var i=0; i<wpts.length; i++) {
var marker = new google.maps.Marker({
map: map,
//icon: "/images/blue_dot.png",
position: new google.maps.LatLng(wpts[i].lat(), wpts[i].lng()),
title: i.toString(),
draggable :true
});
waypoint_markers.push(marker);
var infowindow = new google.maps.InfoWindow({
content: "<table>" +
"<tr><td>Waypoint:</td> <td><input type='text' id='name' value=''/> </td> </tr>" +
"<tr><td>Waypoint Description:</td> <td><input type='text' id='address' value=''/></td> </tr>" +
"<tr><td><input type='hidden' value='"+marker.getPosition()+"'id='hiddenval'></td></tr>"+
"<tr><td></td><td><input type='button' value='Save & Close' onclick='saveData(<?php print_r(node_load(arg(1))->nid);?>)'/></td></tr>"
});
google.maps.event.addListener(marker, 'click', function() {
infowindow.open(map,marker);
});
google.maps.event.addListener(marker, 'dblclick', function() {
marker.setMap(null);
wpts.splice(parseInt(this.title), 1);
calcRoute(wpts);
directionsDisplay.setOptions({ preserveViewport: true, draggable: true});
});
}
}
function clear_markers() {
for(var i=0; i<waypoint_markers.length; i++){
waypoint_markers[i].setMap(null);
}
}
</script>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
</head>
<body onload="init()">
<div id="directionsPanel"></div>
<div id="map"></div>
</body>
</html>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.