Положение не может быть установлено как центр ошибок при использовании Google Maps API - PullRequest
0 голосов
/ 17 августа 2011

У меня есть следующий JS:

var map = null;
var center_marker = null;
var zone = null;

$(document).ready(function () {
    if (GBrowserIsCompatible()) {
        convert_address_to_long_lat("1600 Pennsylvania Avenue NW Washington, DC 20500", function (point) { map = create_map(point); map.setCenter(point, 13); alert('test1'); map.addOverlay(center_marker = new GMarker(point)); draw_the_zones(point); });
        //map.setUIToDefault();
    }
});

function create_map(point) {
        var mapOpt = {
            mapTypeId: google.maps.MapTypeId.TERRAIN,
            center: point,
            zoom: 10
        };
        map = new google.maps.Map(document.getElementById("map_canvas"), mapOpt);
}

function convert_address_to_long_lat(address_string,callback) {
    geocoder = new google.maps.Geocoder();
    return geocoder.geocode({ 'address': address_string }, callback);
}

function draw_the_zones(point) {
    zone = new google.maps.Circle({
        radius: 15,
        fillColor: '#FF0000',
        fillOpacity: 0.2,
        map: map
    });
   zone.bindTo('center', center_marker, 'position');
}

Я использую jQuery для этого события (кстати). Я продолжаю получать ошибки, что позиция не может быть установлена ​​как центр что-то , это не говорит.

Кто-нибудь знает, что я делаю неправильно?!?

Ответы [ 2 ]

1 голос
/ 17 августа 2011

Ваш обратный вызов из geocoder.geocode() не настроен для правильной работы с литералом объекта GeocoderResults.Вместо этого вы воспринимаете point как LatLng объект.Восстановите свой обратный вызов, предоставленный для convert_address_to_long_lat(), чтобы он был более похож на:

function (results, status) {
    if (status == google.maps.GeocoderStatus.OK) {
        var point = results[0].geometry.location;
        map = create_map(point);
        map.setCenter(point, 13);
        alert('test1');
        map.addOverlay(center_marker = new GMarker(point));
        draw_the_zones(point);
    }
}

Обратите внимание: я проверяю статус геокода, чтобы убедиться, что мы добились успеха, затем извлекаю местоположение из геометрического объекта первого результата.Вы должны знать, что геокодер может вернуть несколько возможных результатов из адресной строки, которую вы предоставляете.

Для получения дополнительной информации об GeocoderResults объекте см. Документацию v3 .

0 голосов
/ 17 августа 2011

На этой строке:

zone.bindTo('center', center_marker, 'position');

Вы связываете круг с точкой center_marker, но вы установили его на ноль в верхней части. Попробуйте сделать center_marker объектом LatLng с чем-то вроде:

center_marker = new google.maps.LatLng(53.145,13.438);

Но, очевидно, измените широту и долготу так, чтобы она была на карте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...