php-Google Maps api v3上的反向地址解析
作者:互联网
我想知道是否有人可以帮助我.
我使用下面显示的代码正确绘制从Google Map上的MySQL数据库检索到的标记.
<script type="text/javascript">
//Sample code written by August Li
var icon = new google.maps.MarkerImage("images/location-marker-2.png")
new google.maps.Point(16, 32);
var center = null;
var map = null;
var bounds = new google.maps.LatLngBounds();
function addMarker(lat, lng, info) {
var pt = new google.maps.LatLng(lat, lng);
bounds.extend(pt);
var marker = new google.maps.Marker({
position: pt,
icon: icon,
map: map
});
}
function initMap() {
map = new google.maps.Map(document.getElementById("gmaps-canvas"), {
center: new google.maps.LatLng(0, 0),
zoom: 6,
scrollwheel: true,
draggable: true,
mapTypeId: google.maps.MapTypeId.SATELLITE
});
<?php
include("admin/link.php");
include("admin/opendb.php");
$query = mysql_query("SELECT * FROM `detectinglocations` WHERE `locationid` = '$lid'");
while ($row = mysql_fetch_array($query)){
$locationname=$row['locationname'];
$osgb36lat=$row['osgb36lat'];
$osgb36lon=$row['osgb36lon'];
echo ("addMarker($osgb36lat, $osgb36lon,'<b>$locationname</b><br/>');\n");
}
mysql_close($connect);
?>
center = bounds.getCenter();
map.fitBounds(bounds);
}
</script>
我现在想做的是添加进一步的功能,使用户也可以单击地图以绘制新标记,实质上是使用数据库中预先存在的标记作为工作点,并执行反向地理编码.
我已经研究了好几天,并且尝试实现了很多教程,但是似乎无法使这两个功能都正常工作.
我确实知道要启用点击事件,我需要结合以下内容:
google.maps.event.addListener(map,’click’,function(event){
marker.setPosition(event.latLng)
geocode_lookup(‘latLng’,event.latLng);
});
}
但我必须承认,我还不确定我还需要添加什么.
我只是想知道是否有人可以看一下这个,如果有人可以告诉我我哪里出问题了,我将不胜感激.
非常感谢和问候
解决方法:
我写了一个单独的地图页面,只包含点击反向地理编码功能
我认为地址详细信息令人困惑.结果是一个数组,具有不同的精度级别,其中一个可能包括县,另一个州,另一个街道地址.通常,我只使用results [0].详细信息在文档中:https://developers.google.com/maps/documentation/javascript/geocoding#GeocodingResponses
如果您需要特定的信息,则获取整个过程的肯定方法是遍历整个结果数组,直到找到所需的信息为止(例如,types []包含postal_code).
google.maps.event.addListener(map, 'click', function(event) {
userMarker = new google.maps.Marker({
map: map,
position: event.latLng
});
geocoder.geocode({'latLng': event.latLng}, function(results, status) {
if(status == google.maps.GeocoderStatus.OK) {
if (results[0]) {
alert(results[0].formatted_address);
}
else {
alert("No results");
}
}
else {
alert("Geocoding unsuccessful: Status " + status);
}
});
});
您的代码在哪里?
<script type="text/javascript">
//Sample code written by August Li
var icon = new google.maps.MarkerImage("images/location-marker-2.png")
new google.maps.Point(16, 32);
var center = null;
var map = null;
var bounds = new google.maps.LatLngBounds();
function addMarker(lat, lng, info) {
var pt = new google.maps.LatLng(lat, lng);
bounds.extend(pt);
var marker = new google.maps.Marker({
position: pt,
icon: icon,
map: map
});
}
function initMap() {
map = new google.maps.Map(document.getElementById("gmaps-canvas"), {
center: new google.maps.LatLng(0, 0),
zoom: 6,
scrollwheel: true,
draggable: true,
mapTypeId: google.maps.MapTypeId.SATELLITE
});
<?php
include("admin/link.php");
include("admin/opendb.php");
$query = mysql_query("SELECT * FROM `detectinglocations` WHERE `locationid` = '$lid'");
while ($row = mysql_fetch_array($query)){
$locationname=$row['locationname'];
$osgb36lat=$row['osgb36lat'];
$osgb36lon=$row['osgb36lon'];
echo ("addMarker($osgb36lat, $osgb36lon,'<b>$locationname</b><br/>');\n");
}
mysql_close($connect);
?>
center = bounds.getCenter();
map.fitBounds(bounds);
var geocoder = new google.maps.Geocoder();
google.maps.event.addListener(map, 'click', function(event) {
var userMarker = new google.maps.Marker({
map: map,
position: event.latLng
});
geocoder.geocode({'latLng': event.latLng}, function(results, status) {
if(status == google.maps.GeocoderStatus.OK) {
if (results[0]) {
alert(results[0].formatted_address);
}
else {
alert("No results");
}
}
else {
alert("Geocoding unsuccessful: Status " + status);
}
});
});
}
</script>
标签:reverse-geocoding,php,google-maps-api-3 来源: https://codeday.me/bug/20191013/1906233.html