图钉标记"/>
我如何从MySQL数据库获取坐标和Google Maps api上的图钉标记
这是我的代码,我可以从数据库console.log记录coords,但是我无法将标记固定在index.html页面上,为什么?。是否有可能将“ markers”数组返回给initMap函数并从那里使用它,因为如果我在initMap函数中使用了一些示例数组,它将成功地将标记固定在地图上。但是我从来没有设法将这些标记与从MySQL数据库获得的坐标固定在一起。请帮助
var express = require('express');
var mysql = require('mysql');
var app = express();
var markers=[];
var coords;
var connnection = mysql.createConnection({
host: "localhost",
user: "root",
password: "",
database: "sampleDB"
});
connnection.connect(function(error) {
if (!!error){
console.log('Error');
}
else{
console.log('Connected');
}
});
app.get('/', function(req, resp){
//about mysql
connnection.query("SELECT * FROM mySampleCoords", function (error, rows, fields) {
if (!!error){
console.log('Error in the query');
}
else{
console.log("SUCCESS");
//console.log(rows[0]);
rows.forEach(function(entry, index) {
var coordonate = {
coords:{lat:entry.lat, lng:entry.lng}
}
markers.push(coordonate);
});
console.log(markers);
//for(var i=0;i<markers.length;i++){
//console.log(i, markers[i]);}
/*
for(var i = 0;i < markers.length;i++){
// Add marker
addMarker(markers[i]);
}
// Add Marker Function
function addMarker(props){
var marker = new google.maps.Marker({
position:props.coords,
map:map,
//icon:props.iconImage
});
// Check for customicon
if(props.iconImage){
// Set icon image
marker.setIcon(props.iconImage);
}
// Check content
if(props.content){
var infoWindow = new google.maps.InfoWindow({
content:props.content
});
marker.addListener('click', function(){
infoWindow.open(map, marker);
});
}
}
//end of fct addMarker
*/
//console.log(markers);
//console.log(markers.length);
resp.send(markers);
}//else
});//conn.query
}) //app.get
app.listen(1337);
//------------------------------------------------------------------------------
function initMap(){
// Map options
var options = {
zoom:2.35,
center:{lat:45.2890,lng:21.8877}
}
// New map
var map = new google.maps.Map(document.getElementById('map'), options);
var heatmap = new google.maps.visualization.HeatmapLayer({
data: getPoints(),
radius: 20,
map: map
});
console.log("mesan din initMap");
for(var i = 0;i < markers.length;i++){
// Add marker
addMarker(markers[i]);
}
// Add Marker Function
function addMarker(props){
var marker = new google.maps.Marker({
position:props.coords,
map:map,
//icon:props.iconImage
});
// Check for customicon
if(props.iconImage){
// Set icon image
marker.setIcon(props.iconImage);
}
// Check content
if(props.content){
var infoWindow = new google.maps.InfoWindow({
content:props.content
});
marker.addListener('click', function(){
infoWindow.open(map, marker);
});
}
} //end of fct addMarker
}
回答如下:您发送的坐标格式错误。您应该更改此
var coordonate = {
coords:{lat:entry.lat, lng:entry.lng}
}
对此
var coordonate = new google.maps.LatLng(entry.lat, entry.lng);
您需要调用initMap这样的东西
<script src="https://maps.googleapis/maps/api/js?key=[YOURKEY]&libraries=places&callback=initMap"
async defer></script>
更多推荐
我如何从MySQL数据库获取坐标和Google Maps api上的图钉标记
发布评论