1

问题:


你好,

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

  • 我试过,进入javascript代码,
  • 我还尝试手动输入 $latitude 和 $longitude 的值。
  • 我尝试直接将 'ip2location_latitude()' 和 'ip2location_longitude()' 放入 java 代码中。

最终我需要获取基于 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 -->
4

1 回答 1

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 公里。我建议使用浏览器实现的地理位置。

于 2012-06-14T10:03:15.293 回答