在2周内,我对Google地图进行了大量探讨。我正在尝试阅读论坛和教程。但是当我要开发GIS网络时,我遇到了这个问题。我正在使用谷歌地图apiv3,postgre数据库和PHP。我的数据库里有这么多行。现在我只能根据我的数据库显示多个标记,但我之后标记有一个基于数据库中列内容的唯一图标,如类型1 = 1.png类型2 = 2.png 。 问题是类型太多,所以不可能通过手动定义它们(因为这么多类型,我已经在数据库列中有大约30种类型的内容)。我使用json获取数据库值。我已经尝试过阅读论坛和一些教程,但我找不到答案。对不起,我的英语不好。请帮帮我,谢谢。 这是代码index.php和json.php:
<html lang="en">
<head>
<script type="text/javascript">
function initialize(){
var peta;
var gambar_tanda;
gambar_tanda = 'assets/images/enseval.jpg';
var x = new Array();
var y = new Array();
var customer_name = new Array();
var rayon_name = new Array();
// posisi default peta saat diload
var lokasibaru = new google.maps.LatLng( -1.2653859,116.83119999999997);
var petaoption = {
zoom: 5,
center: lokasibaru,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
peta = new google.maps.Map(document.getElementById("map_canvas"),petaoption);
var infowindow = new google.maps.InfoWindow({
content: ''
});
// memanggil function ambilpeta() untuk menampilkan koordinat
url = "json.php";
$.ajax({
url: url,
dataType: 'json',
cache: false,
success: function(msg){
for(i=0;i<msg.enseval.customer.length;i++){
x[i] = msg.enseval.customer[i].x;
y[i] = msg.enseval.customer[i].y;
customer_name[i] = msg.enseval.customer[i].nama_customer;
//rayon_name[i] = msg.enseval.customer[i].nama_rayon
var point = new google.maps.LatLng(parseFloat(msg.enseval.customer[i].x),parseFloat(msg.enseval.customer[i].y));
tanda = new google.maps.Marker({
position: point,
map: peta,
icon: gambar_tanda,
clickable: true
});
bindInfoWindow(tanda, peta, infowindow, msg.enseval.customer[i].nama_customer );
}
}
});
}
google.maps.event.addDomListener(window, 'load', initialize);
function bindInfoWindow(tanda, peta, infowindow, data) {
google.maps.event.addListener(tanda, 'click', function() {
infowindow.setContent(data);
infowindow.open(peta, tanda);
});
}
</script>
<?php
require ('config.php');
$rayon = $_POST['rayon'];
$cabang = $_POST['org_id'];
//echo "$rayon, $cabang, $rayonhasil";
$sql = "SELECT distinct org_id, customer_name, attribute16, attribute17 FROM hasilgis";
$data = pg_query($sql);
$json = '{"enseval": {';
$json .= '"customer":[ ';
while($x = pg_fetch_array($data)){
$json .= '{';
$json .= '"id_customer":"'.$x['org_id'].'",
"nama_customer":"'.htmlspecialchars($x['customer_name']).'",
"x":"'.$x['attribute17'].'",
"y":"'.$x['attribute16'].'"
},';
}
$json = substr($json,0,strlen($json)-1);
$json .= ']';
$json .= '}}';
echo $json;
?>
答案 0 :(得分:1)
我不确定问题是什么:)
您必须做的唯一事情是为所有类型生成图标。您不必手动执行此操作 - 只需创建一个scipt,为每种类型生成不同颜色的图标,并将其命名为1.jpg
,2.jpg
,...
通过您的json消息传递类型,而不是在客户端通过动态创建图标URL:
gambar_tanda = 'assets/images/'+msg.enseval.customer[i].type+'.jpg';