Что-то вроде следующего должно работать в v3, чтобы центрировать карту на широте пользователя / lng и рисовать маркер в позиции магазина:
var node_marker_image = new google.maps.MarkerImage('PATH_TO_YOUR_CUSTOM_MARKER_IMAGE',
new google.maps.Size(15, 26),
new google.maps.Point(0, 0),
new google.maps.Point(8, 26)
); // adjust point parameters as needed
var shadow = new google.maps.MarkerImage('PATH_TO_YOUR_CUSTOM_MARKER_SHADOW',
new google.maps.Size(22, 26),
new google.maps.Point(0, 0),
new google.maps.Point(2, 26)
); // adjust as needed
var user_position = new google.maps.LatLng(USERLAT, USERLNG);
var myOptions = {
zoom: 8,
center: user_position,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var map = new google.maps.Map(document.getElementById('mapCanvas'), myOptions);
var store_marker = new google.maps.Marker({
position: new google.maps.LatLng(YOURLAT, YOURLNG),
map: map,
icon: node_marker_image,
shadow: shadow
});
Если вы не хотите использовать DB,Вы можете использовать строку JSON для представления местоположений вашего магазина и проанализировать их в каком-либо объекте местоположения.Что касается функции «ближайшего» магазина - вам решать, как вы хотите соотносить почтовые индексы.Почтовые индексы могут быть довольно сложными и часто не соответствуют тому, что вы считаете разумными географическими границами.Данные переписи населения США могут быть хорошим источником информации о почтовых индексах.Похоже, ваши требования довольно просты, так что вы можете просто назначить центральное географическое положение для каждого почтового индекса, о котором вам может понадобиться беспокоиться в таблице поиска (или, опять же, в строке JSON).Затем вы можете использовать метод google.maps.geometry.spherical.computeDistanceBetween()
, чтобы вычислить расстояние между центром интересующего почтового индекса и местоположением вашего магазина.