2012-02-28 3 views
0

Надеюсь, вы сможете помочь. У меня две проблемы, но я довольно новичок в javascript и API карт google (v3), поэтому, пожалуйста, будьте осторожны.Удаление полигона/круга вокруг маркера?

Что я пытаюсь сделать, это добавить маркер к карте, основанный на адресе, например. Геокодирование, тогда везде, где этот маркер, нарисуйте вокруг него круг в радиусе 5 км. Я нашел некоторый код, чтобы сделать круг, а также геокодирование, и оба они хорошо работают вместе.

Проблема заключается в том, что я хочу, чтобы маркер перетащил в новое место и один раз в новое место, удалил старый круг и нарисовал новый круг.

Чтобы понять, что я пытаюсь достичь, взглянуть на http://www.gleff.com/test/

В примере выше, если вы геокодировать адрес, он сосредотачивается на месте маркера и рисует круг. Я хочу перетащить маркер в другое место, и оба удаляют старый круг, и рисуют новый круг на основе нового местоположения. На данный момент он просто перетаскивает маркер в новое место, но круг остается там, где он есть.

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

Задача 1. Как удалить круг (наложения) Проблему 2. Как повторно добавить его в новом месте после перетаскивания маркеров

Я попробовал несколько вещей, такие как добавление маркеров массив, например. var markers = []; , а затем попытаться очистить наложения, используя это в качестве примера.

http://code.google.com/apis/maps/documentation/javascript/examples/overlay-remove.html

Я был неудачным, потому что я, вероятно, не прикладывая код в нужном месте.

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

Итак, может ли кто-нибудь помочь? Я просто хочу нарисовать круг вокруг маркера, а затем смогу перенести этот маркер (включая круг). Но я хочу понять, как удалить круг, потому что в конечном счете у меня будет несколько маркеров и вы захотите удалить отдельные маркеры (включая круг) навсегда с карты.

Примечание: Я уверен, что могу решить, как удалить маркеры самостоятельно, но круг просто не хочет удаляться. Если я, например, геокодирую адрес дважды, этот круг просто рисует второй раз, делая его более темным, а не удаляемым с карты и повторно нарисованным.

Любая помощь была бы замечательной.

Благодаря Geoff

Примечание: только код я модифицировал находится в main.js

ответ

0

Я не знаком с API, но вы могли бы посмотреть на то, что события, которые доступны в API, когда вы начинаете перетаскивать маркер, а также когда вы бросаете маркер. Создание прослушивателей событий, которые рисуют и удаляют круг вокруг маркера, - это путь. Извините, я не могу помочь вам в том, ЧТО-то, что вам нужно слушать ...

+0

Спасибо за это .. Я думаю, что более насущной проблемой является возможность удалить текущий круг первым. Я разработал, как инициировать событие, когда маркер закончил перетаскивать. В теории все равно .. У меня еще не было возможности проверить код еще ... например. событие перетаскивания. Я послушаю это. На этом этапе, однако, я не могу понять, как удалить текущий круг, чтобы я мог перерисовать его в новом месте. – gleff

+0

Примечание: Я думаю, что это будет довольно прямолинейно, чтобы перерисовать его в новом месте .. жесткая часть удаляет текущий круг. – gleff

0

Это дает подвижный маркер с окружностью накладкой, связанный с ним

function init() { 
    var mapCenter = new google.maps.LatLng(56, -4); 
    var map = new google.maps.Map(document.getElementById('map'), { 
     'zoom': 10, 
     'center': mapCenter, 
     'mapTypeId': google.maps.MapTypeId.ROADMAP 
    }); 

    // Create a draggable marker which will later on be binded to a Circle overlay. 
    var marker = new google.maps.Marker({ 
     map: map, 
     position: new google.maps.LatLng(56, -4), 
     draggable: true, 
     title: 'Drag me!' 
    }); 

    // Add a Circle overlay to the map. 
    var circle = new google.maps.Circle({ 
     map: map, 
     radius: 5000// 5 km 
    }); 
    //Bind circle to marker 
    circle.bindTo('center', marker, 'position'); 
    } 

    // Register an event listener to fire when the page finishes loading. 
    google.maps.event.addDomListener(window, 'load', init); 
+0

Удивительный материал .. Большое спасибо. – gleff

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