Вопрос

Я хочу создать наложение поверх Google Maps, которое отображает разные улицы разными цветами.

В Google Maps API можно создавать маркеры и полигоны, которые охватывают определенные области.

Есть ли способ как-то пометить разные улицы?

Это было полезно?

Решение

Мне кажется, вы заинтересованы в том, чтобы показать какую-то специфичную для приложения раскраску для вашего дисплея Google Maps (а не карты дорожного движения).

Если это так, то вам следует ознакомиться с пользовательскими наложениями.Вы можете создать свои собственные плитки наложения прозрачного фона (с вашими цветными улицами), сопоставить их с плитками Google Maps, а затем наложить их на карту.Вы можете найти описание этого материала в Ссылка на API карт - Наложения.

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

Редактировать:Хорошо, я попробовал это, и это было довольно прямолинейно.Вам просто нужно захватить изображения плиток при загрузке страницы Google maps (для области, которую вы хотели бы наложить).Убедитесь, что вы отслеживаете исходные URL-адреса, потому что они имеют координаты x, y, которые вам понадобятся для написания вашего метода наложения плитки.

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

var myCopyright = new GCopyrightCollection("© ");
myCopyright.addCopyright(new GCopyright('Demo',
              new GLatLngBounds(new GLatLng(-90,-180), new GLatLng(90,180)),
                0,'©2007 Google'));

// Create the tile layer overlay and 
// implement the three abstract methods                 
var tilelayer = new GTileLayer(myCopyright);

// properties of the tile I based my tile on
// v=w2.97&hl=en&x=38598&s=&y=49259&z=17&s=Galil.png
tilelayer.getTileUrl = function(point,  zoom) { 
    if (zoom == 17 && point.x == 38598 && point.y == 49259)
        return "../pics/times_square.png"; 
};

tilelayer.isPng = function() { return true;};
tilelayer.getOpacity = function() { return 1.0; }

var myTileLayer = new GTileLayerOverlay(tilelayer);
var map = new GMap2(document.getElementById("map"));
map.setCenter(new GLatLng(40.75740, -73.98590), 17);
map.addOverlay(myTileLayer)

Этот код накладывается на мой Штука съедает Нью - Йорк плитка:

при x = 38598 и y = 49259 на уровне масштабирования 17.

Другие советы

В Google Maps API можно создавать маркеры и полигоны.Вам необходимо создать объекты GPolygon и /или GPolyline

Взгляните на эти учебные пособия

И если вы хотите получить координаты (широту, долготу) определенных улиц, вы можете ознакомиться с исходным кодом эта страница

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

Согласились ли вы использовать Карты открытых потоков?

Попробуйте покопаться в коде, используемом для отображения наложения трафика на обычном сайте Google Maps.

Редактировать:Я только что просмотрел код, и, похоже, даже Google решил, что это проще реализовать, просто сгенерировав строки трафика на сервере и разместив их в виде прозрачных наложений PNG.

Я только что нашел эта ссылка, и я думаю, это могло бы вас заинтересовать.Это пакет JavaScript, который предоставляет функциональность для отображения нескольких маршрутов на Картах Google.

Это то , что вы искали ??

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top