动态谷歌地图/纬度经度vars / php / java / var / basic

时间:2012-06-13 14:49:16

标签: java php api google-maps latitude-longitude

问题:


嗨,

我想通过IP地址在我的网站中嵌入动态谷歌地图。我使用IPlocation工具获得了lat / long数据。我还无法将IP位置的lat / log数据连接到谷歌地图java代码。我不确定如何在加载映射函数中格式化/定义/放置纬度和经度。这是我尝试过但尚未奏效的事情:

  • 我尝试了javascript代码,
  • 我还尝试手动为$ latitude和$ longitude设置值。
  • 我尝试直接在java代码中输入'ip2location_latitude()'和'ip2location_longitude()'。

最终我需要根据IP获取位置历史记录并将位置数据记录到数据库中。

提前致谢

这是我的代码摘要:

<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script> <!-- Google map API v3 -->

<?php
$latitude = 'ip2location_latitude()'; //------------ IP latitude
$longitude = 'ip2location_longitude()'; //------------ IP latitude ip2location_longitude() 
?>

<!-- Start loading canvas google map -->

<script type="text/javascript">
function loadmap () { 
var latlng = new google.maps.LatLng($latitude,$longitude);
var option = {
zoom: 8,
center: latlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
}
map = new google.maps.Map(document.getElementById("map_canvas"), option);
createMarker(latitude,logitude, 'lol');
downloadUrl("airport.xml", function(data) {
var xml = xmlParse(data);
var markers = xml.documentElement.getElementsByTagName("marker");
document.getElementById("test").innerHTML = markers.length;
for (var i = 0; i < markers.length; i++) {
var info = markers[i].getAttribute("info");
var lat = parseFloat(markers[i].getAttribute("lat"));
var lon = parseFloat(markers[i].getAttribute("lng"));

createMarker(lat, lon, info);
bindInfoWindow(marker, map, infoWindow, html);
}
});
}
function createMarker(lat, lon, info){
var myLatlng = new google.maps.LatLng($latitude,$longitude);
var marker = new google.maps.Marker({
position: myLatlng,
map: map,
title:"My location",
icon: "http://google-maps-icons.googlecode.com/files/airport.png"
});
}
</script>
<!-- End Geting map via latitude and longitude-->

<!-- Start calling load map function to load the map -->
<body onload="loadmap ()">
<div id="map_canvas" style="width:400px; height:300px"></div>
<div id="test" style="width:50%; height:50%"></div>
<!-- End calling load map function to load the map -->

1 个答案:

答案 0 :(得分:2)

您忘记使用echo / print打印PHP变量的值。

在createMarker中你应该引用提供的参数(lat,lon)而不是$ latitude / $ longitude

修正版:

<body onload="loadmap ()">
<script  src="http://maps.google.com/maps/api/js?sensor=false">
   </script>
<script src="http://www.iplocationtools.com/iplocationtools.js?key=YOURKEY">
   </script>
<?php
$latitude = 'ip2location_latitude()'; //------------ IP latitude
$longitude = 'ip2location_longitude()'; //------------ IP latitude ip2location_longitude() 
?>
<script type="text/javascript">
function loadmap () { 
  var latlng = new google.maps.LatLng(<?php echo $latitude;?>,<?php echo $longitude;?>);
  var option = {
                zoom: 8,
                center: latlng,
                mapTypeId: google.maps.MapTypeId.ROADMAP
               };
  map = new google.maps.Map(document.getElementById("map_canvas"), option);
  createMarker(<?php echo $latitude;?>,<?php echo $longitude;?>, 'lol');

}
function createMarker(lat, lon, info){
var myLatlng = new google.maps.LatLng(lat,lon);
var marker = new google.maps.Marker({
position: myLatlng,
map: map,
title:"My location",
icon: "http://google-maps-icons.googlecode.com/files/airport.png"
});
}
</script>
<div id="map_canvas" style="width:400px; height:300px"></div>
<div id="test" style="width:50%; height:50%"></div>
</body> 

但是,这项服务不是很准确,对我来说它显示的位置距离我现在的400公里。我建议使用浏览器实现的地理位置。