Yandex map создает две карты, как исправить?

Я не силен в JS по этому прошу подсказать как подправить это дело.

JS
<script type="text/javascript">

    function address_value(city_name)
    {
        alert(city_name.value);
        $.ajax({
            url: 'http://geocode-maps.yandex.ru/1.x/?geocode='+ city_name.value +'&format=json&results=1',             // указываем URL и
            dataType : "json",                     // тип загружаемых данных
            success: function (data) { // вешаем свой обработчик на функцию success
                var coords = data.response.GeoObjectCollection.featureMember[0].GeoObject.Point.pos;
                // формат приходит в Широта-Долгота, мы разбиваем координаты на переменные.
                var coordMap = coords.split(' ');
                var longitude = coordMap[0];
                var latitude = coordMap[1];

                ymaps.ready(init);
                var myMap,
                    myPlacemark;

                function init(){
                    myMap = new ymaps.Map("map", {
                        center: [latitude, longitude],
                        zoom: 16
                    });

                    myPlacemark = new ymaps.Placemark([latitude, longitude], {
                        hintContent: 'Москва!',
                        balloonContent: 'Столица России'
                    });

                    myMap.geoObjects.add(myPlacemark);
                }
            }
        });
    }

</script>


HTML
<input type="text" id="find" name="plz" onchange="address_value(this);"/>

<div id="map" style="width: 100%; height: 400px"></div>


При первом запросе все ок. При втором, он генерирует такую же карту ниже с новым городом. Как мне очищать содержимое Map ? Я пробовал через InnerHTML, но безрезультатно. Как мне новый запрос отобразить в той же карте?
  • Вопрос задан
  • 1459 просмотров
Решения вопроса 2
@Cyber_bober
перед var myMap

if(myMap){
myMap.destroy()
}
Ответ написан
HanDroid
@HanDroid Автор вопроса
Решил вопрос таким образом сорс кода. поиск по адресу.

<input type="text" id="find" name="plz" onchange="address_value(this);"/>

<script type="text/javascript">
    var myMap, myPlacemark;

        function address_value(city_name)
        {
            alert(city_name.value);

            $.ajax({
                url: 'http://geocode-maps.yandex.ru/1.x/?geocode='+ city_name.value +'&format=json&results=1',        
                dataType : "json",                   
                success: function (data) { 
                    var coords = data.response.GeoObjectCollection.featureMember[0].GeoObject.Point.pos;
                    var coordMap = coords.split(' ');
                    var longitude = coordMap[0];
                    var latitude = coordMap[1];

                    function init () {
                        if(myMap){
                            myMap.destroy();
                            myMap = null;
                        }
                        myMap = new ymaps.Map("map", {
                            center: [latitude, longitude],
                            zoom: 16
                    });

                        myPlacemark1 = new ymaps.Placemark([latitude, longitude], {
                            hintContent: 'Москва!',
                            balloonContent: 'Столица России'
                        });

                        myMap.geoObjects.add(myPlacemark1);
                    }
                    ymaps.ready(init);
                }
            });
        }
</script>

<div id="map" style="width: 100%; height: 400px"></div>
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
proudmore
@proudmore
removeChild, и потом отрисовать новую карту?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
28 апр. 2024, в 21:29
3000 руб./за проект
28 апр. 2024, в 20:09
9000 руб./за проект
28 апр. 2024, в 19:54
2000 руб./за проект