Интересно, может ли кто-нибудь помочь мне.
Я использую приведенный ниже код для правильного построения маркеров, полученных из базы данных MySQL на карте Google.
<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>
То, что я сейчас пытаюсь сделать, это добавить дополнительные функции, которые позволят пользователям также щелкнуть по карте, чтобы нарисовать новые маркеры, по существу используя ранее существовавший маркер из базы данных в качестве точки для работы, выполняя reverse geocode
.
Я исследовал это уже несколько дней, и я попытался реализовать целый ряд учебных пособий, но я просто не могу заставить обе части функциональности работать.
Я знаю, что для включения события с on-click
мне нужно включить что-то в соответствие с:
google.maps.event.addListener(map, 'click', function(event) { marker.setPosition(event.latLng) geocode_lookup( 'latLng', event.latLng ); }); }
но я должен признать, что я немного не уверен в том, что еще мне нужно включить.
Я просто задавался вопросом, может ли кто-нибудь взглянуть на это, пожалуйста, и я был бы очень благодарен, если бы кто-нибудь мог показать мне, где я ошибся.
Большое спасибо и добрые пожелания
Я написал отдельную страницу карт с функциональностью только с щелчком на обратный геокод
Я думаю, данные адреса сбивают с толку. Результатом является массив, на разных уровнях точности, который может включать графство, другое состояние, другое – адрес улицы. Обычно я использую только результаты [0]. Подробности приведены в документах: https://developers.google.com/maps/documentation/javascript/geocoding#GeocodingResponses
Если вам нужна конкретная информация, верный способ ее получить – это перебрать весь массив результатов, пока не найдете то, что вам нужно (например, типы [], содержащие почтовый_код).
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>
в<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>
в<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>