Отображение маркера на встроенной Open Street Map на основе адресных данных - PullRequest
0 голосов
/ 31 октября 2011

В настоящее время я обслуживаю страницы, на которых отображается карта Google с маркером, используя адрес, полученный из моей базы данных.В настоящее время я использую довольно простой фрагмент кода JavaScript, чтобы добавить этот маркер путем геокодирования.Мой код js динамически генерируется php.Все статично, за исключением определения «запроса», которое инициализируется строкой поиска адреса.

Я новичок в OSM и провел некоторое исследование, чтобы выяснить, может ли он этого добиться.На данный момент я не уверен, что это возможно.Я обнаружил, что есть несколько js api, подобных OpenLayers, которые мне нужно использовать.

Подводя итог:

Как добавить и показать один маркер в OSM, гдеместоположение основано на адресе вместо пары широта / долгота?

Мой текущий код на основе Google:

<script>
var geocoder; var map; var marker;
var query = 'Deutschland, Berlin, Platz der Republik 1, 11011';

function initialize()
{        
var companyLocation = new google.maps.LatLng(51.964577109947506, 5.07568359375);      
geocoder = new google.maps.Geocoder();
var latlng = new google.maps.LatLng(-34.397, 150.644);
var myOptions = { zoom: 11, center: latlng, mapTypeId: google.maps.MapTypeId.ROADMAP }
map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
codeAddress();
}

function codeAddress()
{
var address = query;
geocoder.geocode( { 'address': address}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
  map.setCenter(results[0].geometry.location);
  var marker = new google.maps.Marker({
     map: map, 
     position: results[0].geometry.location,
     title: "Bundestag",
     labelContent: "",
     labelAnchor: new google.maps.Point(22, 0),
     labelClass: "labels", // the CSS class for the label
     labelStyle: {opacity: 0.75}
  });        
  } else {
    $('#map_canvas').html('<p style="margin: 15px">Address could not be found</p>');
  }
});
}
</script>

1 Ответ

0 голосов
/ 31 октября 2011

См. http://wiki.openstreetmap.org/wiki/Nominatim

Не собираюсь писать код для вас, но на этой вики-странице есть подробная информация о том, как вызвать службу геокодирования Nominatim.

...