我正试图点击地图上的某个区域。该脚本无法正常工作并重新加载页面。也许有人可以看到问题。
我的功能
function clickroute(lati,long) {
map = google.maps.Map(document.getElementById("map_canvas"));
map.panTo(lati,long)
}
其余的
var directionDisplay;
var directionsService = new google.maps.DirectionsService();
var map;
function initialize() {
geocoder = new google.maps.Geocoder();
directionsDisplay = new google.maps.DirectionsRenderer();
var chicago = new google.maps.LatLng(41.850033, -87.6500523);
var myOptions = {
zoom:10,
mapTypeId: google.maps.MapTypeId.ROADMAP,
center: chicago
}
map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
var address = 'virginia water';
geocoder.geocode( { 'address': address}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
map.setCenter(results[0].geometry.location);
var marker = new google.maps.Marker({
map: map,
position: results[0].geometry.location
});
}
});
directionsDisplay.setMap(map);
}
function calcRoute() {
var start = document.getElementById("start").value;
var end = document.getElementById("end").value;
var request = {
origin:start,
destination:end,
travelMode: google.maps.DirectionsTravelMode.DRIVING
};
directionsService.route(request, function(response, status) {
if (status == google.maps.DirectionsStatus.OK) {
directionsDisplay.setDirections(response);
}
});
}
我的活动
<a href="" onclick="clickroute(51.433373, -0.712251)">test</a>
答案 0 :(得分:27)
问题在于您使用map.panTo(latitude,longitude)
但谷歌地图API使用此:panTo(latLng myLatLng)
其中latLng
是谷歌地图类。
尝试这样的事情(未经测试)
function clickroute(lati,long) {
var latLng = new google.maps.LatLng(lati, long); //Makes a latlng
map.panTo(latLng); //Make map global
}
查看here了解更多信息。
修改强> 正如其他人所说,你不想重拍一张新地图。也许更容易让它变得全球化?
答案 1 :(得分:3)
panTo接受LatLng对象作为参数而不仅仅是坐标。在将LatLng对象传递给panTo方法之前创建它。
function clickroute(lati,long) {
map.panTo(new google.maps.LatLng(lati,long));
return false; //this will cancel your navigation
}
您的页面重新加载,因为您没有取消放在锚标记中的onClick中的导航事件。请参阅上面代码中的评论。
和其他人一样,从这个函数中取出map变量,使map全局化。
答案 2 :(得分:2)
您还可以动态设置新标记:
var LatLng = new google.maps.LatLng(lat, lng);
var marker = new google.maps.Marker({
content: "<h2>Hier wohne ich!</h2>",
map: map,position: results[0].geometry.location
});
map.panTo(LatLng);
答案 3 :(得分:0)
线......
map = google.maps.Map(document.getElementById("map_canvas"));
..实际上是在#map_canvas Div中创建一个新的Map。由于该映射应该已经存在,因此您不需要该赋值语句。只需致电
map.panTo(lati,long)
应该有用吗?
编辑:对不起,SSRide360是正确的,应该是......
map.panTo(new google.maps.LatLng(lati, long));
答案 4 :(得分:0)
您可以这样做:
var latLng = new google.maps.LatLng(lat_val, lng_value);
map.panTo(latLng);`