Below I have posted some code that was edited from an article. I can only show one store location on the map. However, I would like to have multiple location that are present.
Here is the code:
<div id="manualEntry">
Your current location
<input id="manualAddress" type="text" style="width: 500px" />
<input id="getManualDirections" type="button" value="Get Directions" />
</div>
<div id="mapContainer" style="height: 500px">
<div style="float: left">
<div id="directionsMap" style="float: none; position: relative; width: 720px; height: 400px">
</div>
</div>
<div id="directionsList" style="float: left; overflow: auto; width: 250px; height: 400px">
</div>
</div>
<script type="text/javascript" src="http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=7.0"></script>
<script type="text/javascript">
$(function () {
var map = null;
var directionsManager = null;
var location = null;
var STORE_LOCATION = "San Jose, CA";
showManualEntry();
$("#askPermission").hide();
loadMap();
// Get the location
var options = {
enableHighAccuracy: true,
timeout: 20000,
maximumAge: 2000
};
navigator.geolocation.getCurrentPosition(showPosition, positionError, options);
function loadMap() {
// Initialize the map
if (!map) {
map = new Microsoft.Maps.Map(document.getElementById("directionsMap"),
{ credentials: "YOUR_BING_MAPS_KEY" });
}
}
function showPosition(position) {
map.entities.clear();
if (position) {
location = position.coords;
map.setView({ zoom: 15, center: new Microsoft.Maps.Location(location.lattitude, location.longitude) })
}
if (!directionsManager) {
Microsoft.Maps.loadModule('Microsoft.Maps.Directions', { callback: createDirectionsManager });
}
else {
createDirectionsManager();
}
}
function createDirectionsManager() {
var displayMessage;
if (!directionsManager) {
directionsManager = new Microsoft.Maps.Directions.DirectionsManager(map);
displayMessage = 'Directions Module loaded\n';
displayMessage += 'Directions Manager loaded';
}
directionsManager.resetDirections();
directionsErrorEventObj = Microsoft.Maps.Events.addHandler(directionsManager, 'directionsError', directionsError);
directionsUpdatedEventObj = Microsoft.Maps.Events.addHandler(directionsManager, 'directionsUpdated', directionsUpdated);
createDrivingRoute(location);
}
function directionsUpdated() {
// Show Success message if required
}
function directionsError(args) {
// Show Error message if required
}
function createDrivingRoute(coords) {
if (!directionsManager) { createDirectionsManager(); }
directionsManager.resetDirections();
// Set Route Mode to driving
directionsManager.setRequestOptions({ routeMode: Microsoft.Maps.Directions.RouteMode.driving });
var fromWayPoint = null;
if (coords != null) {
fromWayPoint = new Microsoft.Maps.Directions.Waypoint(
{
location: new Microsoft.Maps.Location(coords.latitude, coords.longitude)
});
directionsManager.addWaypoint(fromWayPoint);
}
else {
fromWayPoint = new Microsoft.Maps.Directions.Waypoint({ address: $("#manualAddress").val() });
directionsManager.addWaypoint(fromWayPoint);
}
var toWayPoint = new Microsoft.Maps.Directions.Waypoint({ address: STORE_LOCATION });
directionsManager.addWaypoint(toWayPoint);
// Set the element in which the itinerary will be rendered
directionsManager.setRenderOptions({ itineraryContainer: document.getElementById('directionsList') });
directionsManager.calculateDirections();
}
function showManualEntry() {
$("#manualEntry").show();
}
$("#getManualDirections").click(function () {
loadMap();
showPosition(null);
});
function positionError(position) {
switch (position.code) {
case 1:
showManualEntry();
break;
case 2:
showManualEntry();
break;
case 3:
showManualEntry();
break;
default:
break;
}
}
});
</script>
Here is the article:
As Nicolas pointed out the code you have will only show one location on the map. What you first need is a data set of your stores. Many Bing Maps customers use the Bing Spatial Data Services to store their store data and have it exposed as a spatial REST service. http://msdn.microsoft.com/en-us/library/gg585132.aspx Once you have a data source file that matches the required schema you can upload it to your account using the Bing Maps portal as documented here: http://msdn.microsoft.com/en-us/library/hh698204.aspx
Once you have a data source you can then easily query the data source and have it display your nearby store locations. Here are some examples:
http://www.bingmapsportal.com/ISDK/AjaxV7#SpatialDataServices1 http://rbrundritt.wordpress.com/2012/01/17/dynamically-updating-data-in-bing-maps-v7/
If you have your data in a database you may prefer to expose this data using a custom web service. If this is the case then take a look at these blog posts:
http://blogs.bing.com/maps/2013/07/31/how-to-create-a-spatial-web-service-that-connects-a-database-to-bing-maps-using-ef5/ http://blogs.bing.com/maps/2013/08/05/advance-spatial-queries-using-entity-framework-5/
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.