2016-04-23 4 views
-1

Это моя функция, которая содержит расположение мест, мне нужно посетитьКаков формат параметров для geometry.location?

function callback() { 
    document.getElementById("demo").innerHTML="entered into callback function"; 
    var addresses = ['x','y','z']; 
     for (var i = 0; i < addresses.length; i++) { 
     createMarker(addresses[i]); 
    } 
    } 

И это моя функция для создания маркеров

function createMarker(place) { 
document.getElementById("demo").innerHTML+=" entered into createmarker function, location="; 
    document.getElementById("demo").innerHTML+=place; 
    var placeLoc = place.geometry.location; 
    document.getElementById("demo").innerHTML+="placeloc="+placeLoc; 
    var marker = new google.maps.Marker({ 
     map: map, 
     position: place.geometry.location 
    }); 

на странице, я могу видеть

entered into callback function entered into create marker function, location=x 

но я не могу увидеть предложение «placeloc =» и alsp его маркеры на карте, должны ли x, y, z быть в определенном формате для работы geomtery.location?

+0

Ваши члены адреса массива являются строками. Строки не имеют свойства 'geometry'. – geocodezip

+0

хорошо? поэтому какое свойство я должен преобразовать строку, чтобы сделать ее совместимой? –

+0

'.geometry.location' должен быть' google.maps.LatLng' или 'google.maps.LatLngLiteral'. Откуда идут ваши адреса? Откуда появилась функция 'createMarker'? (похоже, что он появился из примера API Places в документации Google). Пожалуйста, предоставьте пример [Минимальный, завершенный, проверенный и читаемый) (http://stackoverflow.com/help/mcve), который демонстрирует вашу проблему. – geocodezip

ответ

0

Для того, чтобы использовать в качестве position собственности в MarkerOptions объекта:

place.geometry.location потребности быть google.maps.LatLng

google.maps.LatLngLiteral также должны работать.

фрагмент кода (с помощью google.maps.LatLngLiteral):

var addresses = [ 
 
    {address: "New York, NY",geometry: {location: {lat: 40.7127837,lng: -74.0059413}}}, 
 
    {address: "Newark, NJ, USA",geometry: {location: {lat: 40.735657,lng: -74.1723667}}}, 
 
    {address: "Baltimore, MD, USA",geometry: {location: {lat: 39.2903848,lng: -76.6121893}}}, 
 
    {address: "Philadelphia, PA, USA",geometry: {location: {lat: 39.9525839,lng: -75.1652215}}} 
 
]; 
 
var map; 
 
var bounds = new google.maps.LatLngBounds(); 
 

 
function initialize() { 
 
    map = new google.maps.Map(
 
    document.getElementById("map_canvas"), { 
 
     center: new google.maps.LatLng(37.4419, -122.1419), 
 
     zoom: 13, 
 
     mapTypeId: google.maps.MapTypeId.ROADMAP 
 
    }); 
 
    callback(); 
 

 
} 
 
google.maps.event.addDomListener(window, "load", initialize); 
 

 
function callback() { 
 
    document.getElementById("demo").innerHTML = "entered into callback function<br>"; 
 

 
    for (var i = 0; i < addresses.length; i++) { 
 
    createMarker(addresses[i]); 
 
    } 
 
    map.fitBounds(bounds); 
 
} 
 

 
function createMarker(place) { 
 
    document.getElementById("demo").innerHTML += " entered into createmarker function, location="; 
 
    document.getElementById("demo").innerHTML += place + "<br>"; 
 
    var placeLoc = place.geometry.location; 
 
    document.getElementById("demo").innerHTML += "placeloc=" + placeLoc.lat + "," + placeLoc.lng + "<br>"; 
 
    var marker = new google.maps.Marker({ 
 
    map: map, 
 
    position: place.geometry.location 
 
    }); 
 
    bounds.extend(marker.getPosition()); 
 
}
html, 
 
body, 
 
#map_canvas { 
 
    height: 100%; 
 
    width: 100%; 
 
    margin: 0px; 
 
    padding: 0px 
 
}
<script src="https://maps.googleapis.com/maps/api/js"></script> 
 
<div id="demo"></div> 
 
<div id="map_canvas"></div>

Смежные вопросы