2012-10-08 12 views
8

मैं इस तरह ज़िप कोड के लिए ज़िप उनकी सीमाओं दिखा कोड के साथ एक इंटरेक्टिव मानचित्र विभिन्न रंगों में प्रदर्शित और करने की जरूरत है:मैं Google मानचित्र API V3 के साथ सीमाओं को दिखाते हुए एक साधारण ज़िप कोड मानचित्र कैसे करूं?

http://www.usnaviguide.com/zip.htm

एक अमेरिका ज़िप कोड में दर्ज करें और पर क्लिक करें "पिन कोड का पता"।

शायद मैं इसे देख रहा हूं, लेकिन मुझे इसके बारे में विशेष रूप से Google मानचित्र API दस्तावेज़ों पर इस बारे में बात करने और दस्तावेज़ीकरण के बारे में बात करने के लिए नहीं मिला है। मैंने उपर्युक्त वेब पेज लिंक पर एक दृश्य स्रोत करने का प्रयास किया है, लेकिन यह मेरे लिए स्पष्ट नहीं लगता है कि यह कैसे काम करता है। पेज पर अन्य सामान भी हैं जो मुझे नहीं पता कि यह मेरी ज़रूरत का हिस्सा है या नहीं।

कुछ सरल कोड उदाहरण बहुत उपयोगी होंगे! धन्यवाद!

http://www.geocodezip.com/geoxml3_test/v3_FusionTables_zipcode_map.html

यह अलग अलग रंग की जरूरत नहीं है, लेकिन आप उस को बदल सकता है:

उत्तर

10

यहाँ है कि मैं FusionTablesLayers साथ एक साथ रखा अमेरिका के लिए एक ज़िपकोड मानचित्र है।

जॉन कोरीट ने टाइल सर्वर का उपयोग करके उस मानचित्र को बनाया, तो आप Google मानचित्र API v3 कस्टम मैप्स के साथ भी ऐसा कर सकते हैं। उदाहरण से

कोड स्निपेट:

google.load('visualization', '1', {'packages':['corechart', 'table', 'geomap']}); 
 
var map; 
 
var labels = []; 
 
var layer; 
 
var tableid = 1499916; 
 

 
function initialize() { 
 
    geocoder = new google.maps.Geocoder(); 
 
    \t map = new google.maps.Map(document.getElementById('map_canvas'), { 
 
    center: new google.maps.LatLng(37.23032838760389, -118.65234375), 
 
    zoom: 6, 
 
    mapTypeId: google.maps.MapTypeId.ROADMAP 
 
    }); 
 
    
 
    layer = new google.maps.FusionTablesLayer(tableid); 
 
    layer.setQuery("SELECT 'geometry' FROM " + tableid); 
 
    layer.setMap(map); 
 

 
    codeAddress("11501" /*document.getElementById("address").value*/); 
 

 
    google.maps.event.addListener(map, "bounds_changed", function() { 
 
    displayZips(); 
 
    }); 
 
    google.maps.event.addListener(map, "zoom_changed", function() { 
 
    if (map.getZoom() < 11) { 
 
     for (var i=0; i<labels.length; i++) { 
 
     labels[i].setMap(null); 
 
     } 
 
    } 
 
    }); 
 
} 
 

 
function codeAddress(address) { 
 
    geocoder.geocode({ 'address': address}, function(results, status) { 
 
     if (status == google.maps.GeocoderStatus.OK) { 
 
     map.setCenter(results[0].geometry.location); 
 
     var marker = new google.maps.Marker({ 
 
      map: map, 
 
      position: results[0].geometry.location 
 
     }); 
 
     if (results[0].geometry.viewport) 
 
      map.fitBounds(results[0].geometry.viewport); 
 
     } else { 
 
     alert("Geocode was not successful for the following reason: " + status); 
 
     } 
 
    }); 
 
    } 
 
    \t \t 
 
function displayZips() { 
 
    //set the query using the current bounds 
 
    var queryStr = "SELECT geometry, ZIP, latitude, longitude FROM "+ tableid + " WHERE ST_INTERSECTS(geometry, RECTANGLE(LATLNG"+map.getBounds().getSouthWest()+",LATLNG"+map.getBounds().getNorthEast()+"))"; 
 
    var queryText = encodeURIComponent(queryStr); 
 
    var query = new google.visualization.Query('http://www.google.com/fusiontables/gvizdata?tq=' + queryText); 
 
    // alert(queryStr); 
 

 
    //set the callback function 
 
    query.send(displayZipText); 
 

 
} 
 
    
 

 
    var infowindow = new google.maps.InfoWindow(); 
 
\t \t 
 
function displayZipText(response) { 
 
if (!response) { 
 
    alert('no response'); 
 
    return; 
 
} 
 
if (response.isError()) { 
 
    alert('Error in query: ' + response.getMessage() + ' ' + response.getDetailedMessage()); 
 
    return; 
 
} 
 
    if (map.getZoom() < 11) return; 
 
    FTresponse = response; 
 
    //for more information on the response object, see the documentation 
 
    //http://code.google.com/apis/visualization/documentation/reference.html#QueryResponse 
 
    numRows = response.getDataTable().getNumberOfRows(); 
 
    numCols = response.getDataTable().getNumberOfColumns(); 
 
/* var queryStr = "SELECT geometry, ZIP, latitude, longitude FROM "+ tableid + " WHERE ST_INTERSECTS(geometry, RECTANGLE(LATLNG"+map.getBounds().getSouthWest()+",LATLNG"+map.getBounds().getNorthEast()+"))"; 
 
*/ 
 

 
    for(i = 0; i < numRows; i++) { 
 
     var zip = response.getDataTable().getValue(i, 1); 
 
     var zipStr = zip.toString() 
 
     while (zipStr.length < 5) { zipStr = '0' + zipStr; } 
 
     var point = new google.maps.LatLng(
 
      parseFloat(response.getDataTable().getValue(i, 2)), 
 
      parseFloat(response.getDataTable().getValue(i, 3))); 
 
     // bounds.extend(point); 
 
     labels.push(new InfoBox({ 
 
\t content: zipStr 
 
\t ,boxStyle: { 
 
\t border: "1px solid black" 
 
\t ,textAlign: "center" 
 
      ,backgroundColor:"white" 
 
\t ,fontSize: "8pt" 
 
\t ,width: "50px" 
 
\t } 
 
\t ,disableAutoPan: true 
 
\t ,pixelOffset: new google.maps.Size(-25, 0) 
 
\t ,position: point 
 
\t ,closeBoxURL: "" 
 
\t ,isHidden: false 
 
\t ,enableEventPropagation: true 
 
     })); 
 
     labels[labels.length-1].open(map); 
 
    } 
 
    // zoom to the bounds 
 
    // map.fitBounds(bounds); 
 
} 
 

 
google.maps.event.addDomListener(window,'load',initialize);
#map_canvas { width: 610px; height: 400px; }
<script type="text/javascript" src="http://www.google.com/jsapi"></script>   
 
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script> 
 
<script type="text/javascript" src="http://google-maps-utility-library-v3.googlecode.com/svn/trunk/infobox/src/infobox.js"></script> 
 
<script type="text/javascript" src="http://geoxml3.googlecode.com/svn/branches/polys/geoxml3.js"></script> 
 

 

 
<form> 
 
    \t  <span class="style51"><span class="style49">Show</span>:</span> 
 
<input id="address" type="text" value="11501" ></input> 
 
<input id="geocode" type="button" onclick="codeAddress(document.getElementById('address').value);" value="Geocode"></input> \t 
 
<div id="map_canvas"></div>

+1

यह infobox रिटर्न परिभाषित नहीं है – Sana

1

क्षेत्रों आकर्षित करने के लिए आप गूगल मैप्स एपीआई से एक Polygon उपयोग कर सकते हैं, लेकिन आप राज्यों की सीमाओं के डेटा की आवश्यकता होगी या शहरों या ज़िपकोड जिन्हें आप आकर्षित करना चाहते हैं।

आपको लगता है कि बहुभुज उदाहरण में स्रोत देखें उपयोग कर सकते हैं, यदि आप गूगल पहले से ही तुम सिर्फ बहुभुज Obj LatLng objs की एक सरणी पारित काम कर नक्शे बहुत आसान है और यह

डेटा के बारे में किया है मुझे लगता है कि आप पा सकते हैं यह fusion table like this में है जो यूएस ज़िप कोड के लिए है।

0

मुझे एक वेबसाइट पर उपयोग किए जा सकने वाले ज़िप कोड के लिए एक ही समस्या हो रही थी। मैं इस मुफ्त प्रोजेक्ट पर ठोकर खा रहा हूं जो कि मैं देख रहा हूं: http://www.openheatmap.com/

व्यक्तिगत उपयोग के लिए बढ़िया, उपयोगकर्ताओं को प्रदर्शित करते समय इतना अच्छा नहीं। अगर कोई मेरे जैसा ही स्थिति में था, तो मुझे आशा है कि इससे उन्हें मदद मिलेगी।

-1

एक सरल एपीआई आप क्या चाहते हैं पाने के लिए उपयोग करने के लिए: https://www.mashape.com/vanitysoft/boundaries-io

एपीआई से ऊपर अमेरिका ज़िपकोड, शहर और राज्य द्वारा सीमाओं (GeoJSON) दिखाता है। आपको बड़े परिणामों को संभालने के लिए प्रोग्रामिक रूप से एपीआई का उपयोग करना चाहिए।

उदाहरण के लिए

: Washington,DC with all Zipcodes in boundaries

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^