Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Применение библиотек > гугл мап


Автор: mogul82 7.5.2009, 16:46
А есть готовые библиотеки на яве скрипт или ПШП - для работы картами от гугла?
Мне главое функцию - что бы по адресу (улица и дом) можно было поставить метку на карте и преобразовать - эту метку в координаты (что бы запомнить в БД SQL)?.

Автор: IDVsbruck 8.5.2009, 15:24
А чем не устраивает АПИ от самого разработчика? - Наиболее подробно, да еще и на русском, если надо ...

Google/продукты Google/ресурсы для разработчиков/API и инструменты для разработчиков/API карт Google/документация
или
http://code.google.com/intl/ru/apis/maps/documentation/index.html
Там и примеры, и код.

Автор: Aliance 12.5.2009, 08:35
Вот как я сделал это с использованием документации от гугла:
Код

<form action="#" onsubmit="showAddress( this.address.value ); return false">
    <input type="text" size="60" name="address" id="add_point_address_field" value="" />
    <input type="button" onclick="showAddress( this.form.address.value );" value="Найти адрес" />
</form>
<div id="map" style="margin: 10px; width: 700px; height: 500px">Подождите. Идет загрузка Google карты...</div>

Код

var map = marker_address = geocoder = lat = lng = null;
window.onload = function()
{
                if ( GBrowserIsCompatible() )
                {
                    map = new GMap2( document.getElementById( 'map' ), { size: new GSize( 900, 550 ) } );
                    map.setCenter( new GLatLng( 59.94435107126614, 30.39093017578125 ), 11 );
                    map.addControl( new GLargeMapControl );            
                    map.disableScrollWheelZoom();
                    map.disableDoubleClickZoom();
                    map.enableContinuousZoom();
                    map.clearOverlays();
                    geocoder = new GClientGeocoder();
                }
};
function showAddress( address )
    {
        if ( ! address.match( /.+/ ) )
        {
            alert( 'Пожалуйста, введите адрес.' );
            $( '#add_point_address_field' ).focus();
            return false;
        }
        if ( geocoder )
        {
            geocoder.getLocations(
                address,
                function( response )
                {
                    if ( ! response || response.Status.code != 200 )
                    {
                        alert( 'Ошибка с кодом ' + response.Status.code );
                    }
                    else
                    {
                        place = response.Placemark[0];
                        var point = new GLatLng( place.Point.coordinates[1], place.Point.coordinates[0] );
                        var marker = new GMarker( point );
                        map.setCenter( point, 16 );
                        map.addOverlay( marker );
                        marker.openInfoWindowHtml( place.address + '<br /><b>Координаты:</b> ' + place.Point.coordinates[1] + ', ' + place.Point.coordinates[0] );
                        marker_address = place.address;
                        lat = place.Point.coordinates[1];
                        lng = place.Point.coordinates[0];
                        if ( lat == 0 || lng == 0 )
                        {
                            alert( 'Произошла ошибка: неправильные координаты.' );
                            return false;
                        }
                    }
                }
            );
        }
    }


Таким образом у тебя в переменных marker_address, lat и lng будут соответственно значения адреса, долгота и широта точки.

Если что не понятно - спрашивай! Я последние 4 месяца только картами от гугла занимаюсь, они мне уже снятся smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)