我有一张地图,我试图从我的数据库中提取标记点,然后创建一个数组,然后使用该数组绘制地图上的每个纬度和经度点。现在我在这里尝试过一些东西,但是,无论何时我测试它,我只是在地图上得到一个点,就像在亚洲一样,而实际上经度和纬度指向宾夕法尼亚。我认为它只是将所有信息打包到阵列中并试图绘制,但我不确定。真的卡在这里任何帮助将不胜感激。
<script type="text/javascript">
$(function () {
var arraddress = new Array();
$.ajax({
url: 'http://example.com/22/www/ba.php',
data: '',
dataType: 'json',
success: function (data) {
$.each(data, function (key, val) {
var lng = val['lng'];
var lat = val['lat'];
var id = val['id'];
var state = val['state'];
arraddress[key] = lat + ":" + lng + ":" + state + ":" + id;
//Set up the map
var APIKEY = "ed24c9065bb55c1090d3d76e7ab8577e";
var cloudmade = new CM.Tiles.CloudMade.Web({
key: APIKEY
});
var map = new CM.Map('mapdiv', cloudmade);
map.setCenter(new CM.LatLng(39.9, -98.5), 4);
//Add the markers from the array
var arLen = arraddress.length;
for (var i = 0, len = arLen; i < len; ++i) {
var onMarker = arraddress[i];
var dat = arraddress[i].split(":");
var mlat = dat[0];
var mlon = dat[1];
var mName = dat[2];
var thisMarker = new CM.Marker(new CM.LatLng(mlon, mlat), {
title: state
})
map.addOverlay(thisMarker);
}
})
}
});
});
}
</script>
答案 0 :(得分:2)
构造
CM.LatLng(纬度, 经度,没有界限?)说明
创建CM.LatLng对象(注意 那个纬度来自第一)。默认情况下,longtitude被包裹起来 在-180和180之间,纬度被夹在〜-85和之间 85.如果unbounded设置为true,则会离开lat./long。我是
Latitude在构造函数中排在第一位,但您已编码:
new CM.LatLng(mlon, mlat)
这可能是错误的方式。
此外,您在每次调用时都会执行大量设置代码,这将针对数组中的每个元素触发。在
之后进行“设置地图”代码是有意义的success: function (data) {
但之前
$.each(data, function (key, val) {
修改强>
再次查看您的代码,如果我正确地阅读它,您可以将其成功功能剥离到
success: function (data) {
var APIKEY = "ANONYMISED_KEY";
var cloudmade = new CM.Tiles.CloudMade.Web({
key: APIKEY
});
var map = new CM.Map('mapdiv', cloudmade);
map.setCenter(new CM.LatLng(39.9, -98.5), 4);
$.each(data, function (key, val) {
map.addOverlay(
new CM.Marker(new CM.LatLng(val['lng'], val['lat']), {
title: val['state']
}));
})
}
您可能希望在发布代码时匿名化您的API密钥。
答案 1 :(得分:0)
我认为你交换了lat和lon params:
var thisMarker = new CM.Marker(new CM.LatLng(mlon, mlat)
https://developers.google.com/maps/documentation/javascript/reference?hl=de#LatLng