目前网站是用PHP编码的,结果是使用API网址从数据库中提取的。搜索结果默认返回10个项目,需要在地图上绘制。
到目前为止,这是我的代码:
<?php
// Loading Domus API
$url_search = 'http://url/site/go/api/search';
$xml_search = @simplexml_load_file($url_search) or die ("no file loaded") ;
//Displaying latitude and longutude
$xml_search = json_decode($xml_search);
foreach($xml_search->property as $house) {
echo $lat = $house->address->latitude , $long = $house->address->longitude;
};
&GT;
然后我有了JavaScripts
var locations = [
];
var map = new google.maps.Map(document.getElementById('map'), {
zoom: 10,
center: new google.maps.LatLng(-33.92, 151.25),
mapTypeId: google.maps.MapTypeId.ROADMAP
});
var infowindow = new google.maps.InfoWindow();
var marker, i;
for (i = 0; i < locations.length; i++) {
marker = new google.maps.Marker({
position: new google.maps.LatLng(locations[i][1], locations[i][2]),
map: map
});
google.maps.event.addListener(marker, 'click', (function(marker, i) {
return function() {
infowindow.setContent(locations[i][0]);
infowindow.open(map, marker);
}
})(marker, i));
}
但这当然不起作用。
答案 0 :(得分:1)
要将地图上的点指向您想要的位置,您需要确定要绘制的地点的经度/纬度。我建议您使用Google Maps Geocoding API为您解决这个问题,例如,让我们使用County Beds中的火车站,邮编MK401DR。
使用URL将该邮政编码提供给Geocode API,如此
http://maps.googleapis.com/maps/api/geocode/json?address=MK401DR,+UK&sensor=true
你会得到一个带有地址信息的JSON数组,但最重要的是你在"geometry"
下你会看到它给你经度/纬度位置,例如:
"lat" : 52.1516477,
"lng" : -0.4437241
例如,如果你将那个long / lat输入我给你(https://code.google.com/apis/ajax/playground/#markers_v3)的谷歌API游乐场链接,就像这样
var map;
function initialize() {
var mapDiv = document.getElementById('map-canvas');
map = new google.maps.Map(mapDiv, {
center: new google.maps.LatLng(52.1516477, -0.4437241),
zoom: 13,
mapTypeId: google.maps.MapTypeId.ROADMAP
});
google.maps.event.addListenerOnce(map, 'tilesloaded', addMarkers);
}
function addMarkers() {
var bounds = map.getBounds();
var southWest = bounds.getSouthWest();
var northEast = bounds.getNorthEast();
var lngSpan = northEast.lng() - southWest.lng();
var latSpan = northEast.lat() - southWest.lat();
var latLng = new google.maps.LatLng(52.1516477, -0.4437241);
var marker = new google.maps.Marker({
position: latLng,
map: map
});
}
你现在在贝德福德郡的火车站附近有一张地图(是的,你需要弄清楚地理编码api给你的长/纬是最准确的,你喂地理编码的地址越多API标记为你标记的长/纬度越准确。
然后你可以通过添加另一个
来添加另一个标记 var latLng = new google.maps.LatLng([latitude], [longitude]);
var marker = new google.maps.Marker({
position: latLng,
map: map
});
因此,您需要浏览所有点的所有地址,并获取它们的经度/纬度(如果您还没有它们)。然后,您需要将它们提供给Google Maps API javascript,它会为您绘制标记。
修改强>
如何自动绘制从PHP到javascript的点数的非常粗略的示例,您显然需要包含其余的Google Maps API js&amp;相关的HTML容器等...
<?php
// array of properties
$properties = array(
array('long' => '52.1516477', 'lat' => '-0.4437241'),
array('long' => '52.1526477', 'lat' => '-0.4438241'),
array('long' => '52.1536477', 'lat' => '-0.4439241'),
array('long' => '52.1546477', 'lat' => '-0.4439641'),
)
?>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
var properties_array = <?php echo json_encode($properties)?>;
function plot_map_points() {
$.each(properties_array, function(index, value) {
var latLng = new google.maps.LatLng(value['lat'], value['long']);
var marker = new google.maps.Marker({
position: latLng,
map: map
});
});
}
plot_map_points();
});
</script>