Javascript 诺基亚地图api中的点击事件问题
我试试这个代码Javascript 诺基亚地图api中的点击事件问题,javascript,here-api,Javascript,Here Api,我试试这个代码 for(i=0; i<num ;i++) { points.push([lats[i], lngs[i]]); if(i==0) str = 'S'; else if(i==num-1) str = 'E'; else str = ''; var marker = new nokia.maps.map.Marker( [lats[i], lngs[i]], {
for(i=0; i<num ;i++)
{
points.push([lats[i], lngs[i]]);
if(i==0) str = 'S';
else if(i==num-1) str = 'E';
else str = '';
var marker = new nokia.maps.map.Marker(
[lats[i], lngs[i]],
{
title: str,
visibility: true,
icon: img,
anchor: new nokia.maps.util.Point(5, 5)
});
marker.addListener('click', function(evt){
$('.loc').html(times[i]);
});
map.objects.add(marker);
}
for(i=0;i看起来问题出在线路上:
$('.loc').html(times[i]);
在标记侦听器中。事件在激发时无法访问数组元素,因此失败。我认为您需要向标记添加属性并访问它,如图所示:
var marker = new nokia.maps.map.Marker(
[lats[i], lngs[i]],
{
title: str,
visibility: true,
icon: img,
anchor: new nokia.maps.util.Point(29, 71),
$html : times[i]
});
marker.addListener('click', function(evt){
//$('.loc').html(times[i]);
alert (evt.target.$html);
});
尝试以下操作(当然,请使用您自己的应用程序Id和令牌):
html{
溢出:隐藏;
}
身体{
保证金:0;
填充:0;
溢出:隐藏;
宽度:100%;
身高:100%;
位置:绝对位置;
}
#地图容器{
宽度:100%;
身高:100%;
左:0;
排名:0;
位置:绝对位置;
}
nokia.Settings.set(“appId”,“此处显示您的appId”);
nokia.Settings.set(“authenticationToken”,“您的身份验证令牌位于此处”);
var mapContainer=document.getElementById(“mapContainer”);
var DefaultLatitude=52.516237;
var Default经度=13.377686;
var defaultZoomLevel=16;
var映射选项=
{
baseMapType:nokia.maps.map.Display.NORMAL,
中心:新的nokia.maps.geo.Coordinate(默认纬度,默认经度),
zoomLevel:defaultZoomLevel,
组成部分:[
新的nokia.maps.map.component.ZoomBar(),
新的nokia.maps.map.component.Behavior(),
新的nokia.maps.map.component.Overview(),
新的nokia.maps.map.component.ScaleBar(),
新的nokia.maps.map.component.ContextMenu()
]
};
var map=new nokia.maps.map.Display(mapContainer、mapOptions);
var str=“”;
变量img=”http://api.maps.nokia.com/en/playground/examples/maps/res/markerHouse.png";
var points=新数组();
var lats=新数组();
var lngs=新数组();
var times=新数组();
var-num;
lats[0]=52.516237;
lngs[0]=13.377686;
倍[0]=“勃兰登堡门”;
num=1;
对于(var i=0;它有问题,但这不是我的问题。问题在于我有map的div
元素。我有方向:rtl
用于该div,它导致map没有触发我的click事件。奇怪,但问题解决了。
<!DOCTYPE HTML SYSTEM>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=7; IE=EmulateIE9" />
<script type="text/javascript" charset="UTF-8" src="http://api.maps.nokia.com/2.2.3/jsl.js"></script>
<style type="text/css">
html {
overflow:hidden;
}
body {
margin: 0;
padding: 0;
overflow: hidden;
width: 100%;
height: 100%;
position: absolute;
}
#mapContainer {
width:100%;
height: 100%;
left: 0;
top: 0;
position: absolute;
}
</style>
</head>
<body>
<div id="mapContainer"></div>
<script type="text/javascript">
nokia.Settings.set( "appId", "YOUR APP ID GOES HERE");
nokia.Settings.set( "authenticationToken", "YOUR AUTHENTICATION TOKEN GOES HERE");
var mapContainer = document.getElementById("mapContainer");
var DefaultLatitude = 52.516237;
var DefaultLongitude = 13.377686;
var defaultZoomLevel = 16;
var mapOptions =
{
baseMapType: nokia.maps.map.Display.NORMAL,
center: new nokia.maps.geo.Coordinate(DefaultLatitude, DefaultLongitude),
zoomLevel: defaultZoomLevel,
components: [
new nokia.maps.map.component.ZoomBar(),
new nokia.maps.map.component.Behavior(),
new nokia.maps.map.component.Overview(),
new nokia.maps.map.component.ScaleBar(),
new nokia.maps.map.component.ContextMenu()
]
};
var map = new nokia.maps.map.Display(mapContainer, mapOptions);
var str ="";
var img = "http://api.maps.nokia.com/en/playground/examples/maps/res/markerHouse.png";
var points= new Array();
var lats = new Array();
var lngs = new Array();
var times = new Array();
var num;
lats[0] = 52.516237;
lngs[0] = 13.377686;
times[0] = "brandenburg gate";
num = 1;
for(var i=0; i<num ;i++)
{
points.push([lats[i], lngs[i]]);
if(i==0) str = 'S';
else if(i==num-1) str = 'E';
else str = '';
var marker = new nokia.maps.map.Marker(
[lats[i], lngs[i]],
{
title: str,
visibility: true,
icon: img,
anchor: new nokia.maps.util.Point(29, 71),
$html : times[i]
});
marker.addListener('click', function(evt){
//$('.loc').html(times[i]);
alert (evt.target.$html);
});
map.objects.add(marker);
}
</script>
</body>
</html>