【发布时间】:2015-02-21 19:35:33
【问题描述】:
我是 jQuery Mobile 初学者,我正在尝试从 JSON 文件中读取数据并在 Google 地图标记中填充信息(例如坐标)。
此代码运行良好,但未填充任何标记。任何人都可以帮助我发现 JSON 问题?
$(document).on("pageinit", "#agents", function () {
var defaultLatLng = new google.maps.LatLng(-25.975769, 32.582499); // Default
if (navigator.geolocation) {
function success(pos) {
// Location found, show map with these coordinates
drawMap(new google.maps.LatLng(pos.coords.latitude, pos.coords.longitude));
}
function fail(error) {
drawMap(defaultLatLng); // Failed to find location, show default map
}
// Find the users current position. Cache the location for 5 minutes, timeout after 6 seconds
navigator.geolocation.getCurrentPosition(success, fail, {
maximumAge: 500000,
enableHighAccuracy: true,
timeout: 6000
});
} else {
drawMap(defaultLatLng); // No geolocation support, show default map
}
function drawMap(latlng) {
var myOptions = {
zoom: 10,
center: latlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var map = new google.maps.Map(document.getElementById("map-canvas"), myOptions);
//READ FROM JSON
$.getJSON('data/agents.json', function (data) {
$.each(data.markers, function (i, marker) {
var marker = new google.maps.Marker({
position: Marker.LatLng(marker.latitude, marker.longitude),
map: map,
title: Marker.title(marker.latitude, marker.longitude),
});
}).click(function () {
$('#map-canvas').gmap('openInfoWindow', {
'address': marker.address
}, this);
});
});
JSON
{
"markers": [{
"latitude": -25.975769,
"longitude": 32.582499,
"title": "ACME Company",
"address": "my address 1"
}, {
"latitude": -25.977743,
"longitude": 32.579959,
"title": "XPTO Company",
"address": "my address 2"
}]
}
【问题讨论】:
-
发布的代码不是有效的javascript(
drawMap函数没有关闭,初始$(document).on("pageinit"也没有关闭)。 -
什么是
Marker.title()/Marker.LatLng()? -
我可能复制错了。谷歌地图确实出现了,但没有出现标记。 Latlng 我认为是 API 的内部函数。
-
将
Marker.LatLng(marker.latitude, marker.longitude),替换为new google.maps.LatLng(marker.latitude, marker.longitude)。
标签: javascript jquery json jquery-mobile google-maps-api-3