我已经在我的网页上安装了谷歌地图元素,我希望它能够在点击链接时更改商店的位置
这里是html
<div class="mapnav">
<h5>Select a map:</h5>
<a href="javascript:;" class="location" onclick="resetMap(21.535176, 39.177557)">Madinah Road Branch</a>
<a href="javascript:;" class="location" onclick="resetMap(21.535176, 49.177557)">Prince Sultan St. Branch</a>
<a href="javascript:;" class="location" onclick="resetMap(22.535176, 39.177557)">Sharqiya Branch</a>
</div>
这里是javascript - 我已经在外部脚本的原始谷歌地图功能中定义了一个resetMap函数
function resetMap(newLatitude, newLongitude){
//reset google map options
var map_options = {
center: new google.maps.LatLng(newLatitude, newLongitude),
zoom: map_zoom,
panControl: false,
zoomControl: false,
mapTypeControl: false,
streetViewControl: false,
mapTypeId: google.maps.MapTypeId.ROADMAP,
scrollwheel: false,
styles: style,
}
//reinizialize the map
var map = new google.maps.Map(document.getElementById('google-container'), map_options);
//add a custom marker to the map
var marker = new google.maps.Marker({
position: new google.maps.LatLng(newLatitude, newLongitude),
map: map,
visible: true,
icon: marker_url,
});
}
我一直在控制台中获得一个未定义错误的函数。我一直在寻找许多线程,但大多数关于同一主题的内容都非常具体针对个别问题。
答案 0 :(得分:0)
我在原始谷歌地图功能
中定义了一个resetMap功能
函数声明的范围与var
类似。它没有被定义,因为你试图在全局范围内访问它,它只存在于另一个函数中。
移动它以使其成为全球性的。
答案 1 :(得分:0)
我在原始谷歌地图中定义了一个resetMap函数 在外部脚本上运行
如果您在function
(您提到的Google地图功能)中定义了function
(或任何内容),则它将不再属于全球范围。
你可以
2)或者通过执行
将方法明确地放在窗口的范围(全局范围)中window.resetMap = function (newLatitude, newLongitude){
除非函数不在全局范围内,否则您将无法通过直接事件处理程序(如onclick属性事件处理程序)调用它
另一种方法可能是通过addEventListener
分配事件,其中方法在范围内。
例如
function resetMap(newLatitude, newLongitude)
{
//code here
}
//Event assignment here
$(".mapnav a.location").bind("click", function(){
var lat = parseFloat($(this).attr("data-lat"));
var long= parseFloat($(this).attr("data-long"));
resetMap(lat, long )
})
虽然您的标记看起来像
<a href="javascript:;" class="location" data-lat="21.535176" data-long="39.177557">Madinah Road Branch</a>